目录
Instant Instant是时间线上的某个时刻/时间戳。通过获取Instant的对象 可以拿到此刻的时间.
JDK8之前传统的日期、时间
Date
代表的是日期和时间。
构造器 | 说明 |
public Date() | 创建一个Date对象,代表的是系统当前此刻日期时间。 |
public Date(long time) | 把时间毫秒值转换成Date日期对象。 |
常见方法 | 说明 |
public long getTime() | 返回从1970年1月1日 00:00:00走到此刻的总的毫秒数 |
public void setTime(long time) | 设置日期对象的时间为当前时间毫秒值对应的时间 |
SimpleDateFormat
代表简单日期式化,可以用来把日期对象、时间毫秒值格式化成我们想要的形式。
常见构造器 | 说明 |
public SimpleDateFormat (String pattern) | 创建简单日期格式化对象,并封装时间格式 |
格式化时间的方法 | 说明 |
public final String format(Date date) | 将日期格式化成日期/时间字符串 |
public final String format(object time) | 将时间毫秒值式化成日期/时间字符串 |
Calendar
代表的是系统此刻时间对应的日历。通过它可以单独获取、修改时间中的年、月、日、时、分、秒等。
方法名 | 说明 |
public static Calendar getInstance() | 获取当前日历对象 |
public int get(int field) | 获取日历中的某个信息 |
public final Date getTime() | 获取日期对象 |
public long getTimeInMillis() | 获取时间毫秒值 |
public void set(int field,int value) | 修改日历的某个信息 |
public void add(int field,int amount) | 为某个信息增加/减少指定的值 |
calendar是可变对象,一旦修改后对其对象本身表示的时间将产生变化。
JDK8开始新增的日期、时间
LocalDate
代表本地日期(年月日星期)
常用API(都是处理年、月、日、星期相关的)。
方法名 | 说明 |
public int geYear() | 获取年 |
public int getMonthValue() | 获取月份 |
public int getDayOfMonth() | 获取日 |
public int getDayOfYear() | 获取当前是一年中的第几天 |
public DayOfWeek getDayOfweek() | 获取星期几:ld.getDayOfWeek().getValue() |
方法名 | 说明 |
withYear、withDay、withDayOfMonth、withDayOfYear | 直接修改某个信息,返回新日期对象 |
plusYear、plusMonth、 plusDays、 plusWeeks | 把某个信息加多少,返回新日期对象 |
minusYears、minusMonths、minusDays、minusWeeks | 把某个信息减多少,返回新日期对象 |
equals isBefore isAfter | 判断两个日期对象是否相等,在前还是在后 |
LocalTime
代表本地时间(时分秒纳秒)
常用API(都是处理时分秒纳秒相关的)
方法名 | 说明 |
public int getHour() | 获取小时 |
public int getMinute() | 获取分 |
public int getSecond() | 获取秒 |
public int getNano() | 获取纳秒 |
说明 | |
修改时间,返回新时间对象 | |
把某个信息加多少,返回新时期对象 | |
把某个信息减多少,返回新时间对象 | |
判断两个时间对象是否相等,在前还是在后 |
LocalDateTime
代表本地日期、时间(年月日星期时分秒纳秒)
常用API(可以处理年月日星期时分秒纳秒等信息)
方法名 | 示例 |
public static Xxxx now();获取系统当前时间对应的该对象 | LocaDate Id=LocalDate.now(); LocalTime It=LocalTime.now(); LocalDateTime Idt=LocalDateTime.now(); |
public static Xxxx of(...);获取指定时间的对象 | LocalDate localDatel=LocalDate.of(2099,11,11); LocalTime localTimel=LocalTime.of(9,8,59); LocalDateTime localDateTimel=LocalDateTime.of(2025,11,16,14,30,01); |
LocalDateTime转换成LocalDate、LocalTime
方法名 | 说明 |
public LocalDate toLocalDate() | 转换成一个LocalDate对象 |
public LocalTime toLocalTime() | 转换成一个localTime对象 |
ZoneId:代表时区Id
中国标准时间:世界标准时间+8小时
方法名 | 说明 |
public static Set<String>getAvailableZoneIds() | 获取Java中支持的所有地区 |
public static ZoneId systemDefault() | 获取系统默认时区 |
public static ZoneId(String zoneId) | 获取一个指定时区 |
Instant
Instant是时间线上的某个时刻/时间戳。通过获取Instant的对象 可以拿到此刻的时间.
该时间由两部分组成:从1970-01-01 00:00:00 开始走到此刻的总秒数+不够1秒的纳秒数(可以用来记录代码的执行时间,或用于记录用户操作某个事件的时间点。
传统的Date类,只能精确到亳秒,并且是可变对象;新增的Instant类,可以精确到纳秒,并且是不可变对象,推荐用Instant代替Date。)
period
可以用于计算两个LocalDate对象、相差的年数、月数、天
Duration
可以用于计算两个时间对象相差的天数、小时数、分数、秒数、纳秒数;支持LocalTime、LocalDateTime、Instant等时间