LocalDateTime
从 Java 8 开始,java.time包提供了新的日期和时间 API,主要涉及的类型有:
本地日期和时间:
LocalDate、LocalTime、LocalDateTime。带时区的日期和时间:
ZoneDateTime;时刻:
Instant;时区:
ZoneId,ZoneOffset;时间间隔:
Duration。
以及一套新的用于取代SimpleDateFormat的格式化类型DateTimeFormatter。
和旧的 API 相比,新 API 严格区分了时刻,本地日期、本地时间和带时区的日期时间,并且对日期和时间进行运算更加方便。
此外,新 API 修改了旧 API 不合理的常量设计:
Monoth的范围用1~12表示1月到12月week的范围用1~7表示周一到周日。
LocalDate date = LocalDate.now(); // 2025-01-20
LocalTime time = LocalTime.now(); // 11:21:40.748774
LocalDateTime dateTime = LocalDateTime.now(); // 2025-01-20T11:21:40.748785本地日期和时间通过now()获取到的总是以当前默认时区返回的。LocalDateTime、LocalDate和LocalTime默认严格按照ISO 8601规定的日期和时间格式进行打印。
LocalDateTime dateTime = LocalDateTime.now(); // 2025-01-20T11:22:35.205451
LocalDate date = dateTime.toLocalDate(); // 转换到当前日期 2025-01-20
LocalTime time = dateTime.toLocalTime(); // 转化到当前时间 11:22:35.205451反过来,通过指定的日期和时间创建LocalDateTime可以通过of()方法:
LocalDate date = LocalDate.of(2019, 1, 1); // 2019-01-01
LocalTime time = LocalTime.of(23, 59, 59); // 23:59:59
LocalDateTime dateTime = LocalDateTime.of(2019, 1, 1, 23, 59, 59); // 2019-01-01T23:59:59
LocalDateTime dt3 = LocalDateTime.of(date, time); // 2019-01-01T23:59:59因为严格按照ISO 8601的格式,因此,将字符串转换为LocalDateTime就可以传入标准格式:
LocalDateTime dateTime = LocalDateTime.parse("2015-05-10T06:30:00"); // 2015-05-10T06:30
LocalTime time = LocalTime.parse("06:30:00"); // 06:30
LocalDate date = LocalDate.parse("2015-05-10"); // 2015-05-10注意ISO 8601规定的日期和时间分隔符是T。标准格式如下:
日期:
yyyy-MM-dd时间:
HH:mm:ss带毫秒的时间:
HH:mm:ss.SSS日期和时间:
yyyy-MM-dd'T'HH:mm:ss带毫秒的日期和时间:
yyyy-MM-dd'T'HH:mm:ss.SSS
最后更新于
这有帮助吗?