简介
Java 8的日期和时间类包含LocalDate
、LocalTime
、Instant
、Duration
以及Period
,这些类都包含在java.time
包中,下面我们看看这些类的用法
LocalDate
和LocalTime
LocalDate
类:
表示一个具体的日期,但不包含具体时间,也不包含时区信息。可以通过LocalDate
的静态方法of()
创建一个实 例,LocalDate
也包含一些方法用来获取年份,月份,天,星期几等:
LocalDate localDate = LocalDate.of(2017, 1, 4); // 初始化一个日期:2017-01-04
int year = localDate.getYear(); // 年份:2017
Month month = localDate.getMonth(); // 月份:JANUARY
int dayOfMonth = localDate.getDayOfMonth(); // 月份中的第几天:4
DayOfWeek dayOfWeek = localDate.getDayOfWeek(); // 一周的第几天:WEDNESDAY
int length = localDate.lengthOfMonth(); // 月份的天数:31
boolean leapYear = localDate.isLeapYear(); // 是否为闰年:false
也可以调用静态方法now()
来获取当前日期:
LocalDate now = LocalDate.now();
LocalTime
和LocalDate
类似,他们之间的区别在于LocalDate
不包含具体时间,而LocalTime
包含具体时间,例如:
LocalTime localTime = LocalTime.of(17, 23, 52); // 初始化一个时间:17:23:52
int hour = localTime.getHour(); // 时:17
int minute = localTime.getMinute(); // 分:23
int second = localTime.getSecond(); // 秒:52
LocalDateTime
LocalDateTime
类:
是LocalDate
和LocalTime
的结合体,可以通过of()
方法直接创建,也可以调用LocalDate
的atTime()
方法或LocalTime
的atDate()
方法将LocalDate
或LocalTime
合并成一个LocalDateTime
LocalDateTime ldt1 = LocalDateTime.of(2017, Month.JANUARY, 4, 17, 23, 52);
LocalDate localDate = LocalDate.of(2017, Month.JANUARY, 4);
LocalTime localTime = LocalTime.of(17, 23, 52);
LocalDateTime ldt2 = localDate.atTime(localTime);
LocalDateTime
也提供用于向LocalDate
和LocalTime
的转化:
LocalDate date = ldt1.toLocalDate();
LocalTime time = ldt1.toLocalTime();
Instant
Instant:
用于表示一个时间戳,它与我们常使用的System.currentTimeMillis()
有些类似,不过Instant
可以精确到纳秒(Nano-Second),System.curren