Java8时间格式化详解

Java8时间格式化详解

新时间API

Java 8引入了java.time包,提供了全新日期时间API。

LocalDateTime

1
2
3
4
5
6
7
8
9
LocalDateTime now = LocalDateTime.now();
LocalDateTime of = LocalDateTime.of(2024, 1, 1, 12, 0);

// 格式化
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String str = now.format(formatter);

// 解析
LocalDateTime parse = LocalDateTime.parse("2024-01-01 12:00:00", formatter);

DateTimeFormatter

1
2
3
4
5
// 常用格式
DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter.ofPattern("HH:mm:ss");
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter.ofPattern("yyyy年MM月dd日");

时间计算

1
2
LocalDateTime plus = now.plusDays(1).plusHours(2);
LocalDateTime minus = now.minusMonths(1);

与旧API互转

1
2
3
4
5
6
7
8
9
// Date -> LocalDateTime
Date date = new Date();
Instant instant = date.toInstant();
LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());

// LocalDateTime -> Date
LocalDateTime ldt = LocalDateTime.now();
Instant instant = ldt.atZone(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant);

总结

Java 8时间API更加清晰易用,建议替换掉旧的Date和Calendar。