Java 1.8 LocalDateTime
LocalDateTime
是一个日期-时间对象。你也可以将其看成是 LocalDate
和 LocalTime
的结合体。操作上,也大致相同。
LocalDateTime
同样是一个final
类型对象。
LocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59);
DayOfWeek dayOfWeek = sylvester.getDayOfWeek();
System.out.println(dayOfWeek); // 星期三
Month month = sylvester.getMonth();
System.out.println(month); // 十二月
// 获取改时间是该天中的第几分钟
long minuteOfDay = sylvester.getLong(ChronoField.MINUTE_OF_DAY);
System.out.println(minuteOfDay); // 1439
如果再加上的时区信息,LocalDateTime
还能够被转换成 Instance
实例。Instance
能够被转换成老版本中 java.util.Date
对象。
Instant instant = sylvester
.atZone(ZoneId.systemDefault())
.toInstant();
Date legacyDate = Date.from(instant);
System.out.println(legacyDate); // Wed Dec 31 23:59:59 CET 2014
格式化 LocalDateTime
对象就和格式化 LocalDate 或者 LocalTime 一样。除了使用预定义的格式以外,也可以自定义格式化输出。
DateTimeFormatter formatter =
DateTimeFormatter
.ofPattern("MMM dd, yyyy - HH:mm");
LocalDateTime parsed = LocalDateTime.parse("Nov 03, 2014 - 07:13", formatter);
String string = formatter.format(parsed);
System.out.println(string); // Nov 03, 2014 - 07:13
注意:和
java.text.NumberFormat
不同,新的DateTimeFormatter
类是final
类型的,同时也是线程安全的。更多细节请查看这里