【笔记】Java的日期和时间
前言
Java的日期和时间学习笔记
引入依赖
1 | import java.time.*; |
创建对象
当前日期和时间
无时区
1 | LocalDateTime now = LocalDateTime.now(); |
有时区
1 | ZonedDateTime now = ZonedDateTime.now(); |
1 | OffsetDateTime now = OffsetDateTime.now().atoOffset(ZoneOffset.of("+08:00:00")); |
仅日期
1 | LocalDate now = LocalDate.now(); |
仅时间
1 | LocalTime now = LocalTime.now(); |
任意日期和时间
Month.JANUARY:月份常量
1 | LocalDateTime ldt = LocalDateTime.of(2016, 1, 2, 15, 4, 5); |
1 | LocalDate ld = LocalDate.of(2016, Month.JANUARY, 2); |
仅日期
1 | LocalDate ld = LocalDate.of(2016, 1, 2); |
仅时间
1 | LocalTime lt = LocalTime.of(15, 4, 5); |
当前时间戳
毫秒
1 | long timestamp = Instant.now().toEpochMilli(); |
获取年月日时分秒
1 | LocalDateTime ldt = LocalDateTime.now(); |
修改年月日时分秒
1 | LocalDateTime ldt = LocalDateTime.now(); |
增减年月日时分秒
1 | LocalDateTime ldt = LocalDateTime.now(); |
1 | LocalDateTime ldt = LocalDateTime.now(); |
比较日期和时间
1 | LocalDateTime ldt1 = LocalDateTime.now(); |
1 | LocalDateTime ldt1 = LocalDateTime.now(); |
日期和时间与时间戳互转
日期和时间转换为时间戳
无时区
1 | LocalDateTime ldt = LocalDateTime.now(); |
有时区
1 | ZonedDateTime zdt = ZonedDateTime.now(); |
时间戳转换为日期和时间
无时区
1 | long timestamp = Instant.now().toEpochMilli(); |
有时区
1 | long timestamp = Instant.now().toEpochMilli(); |
格式化日期和时间
日期和时间转换为字符串
1 | DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
字符串转换为日期和时间
通过自定义格式化字符串格式化
日期和时间
1 | DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
仅日期
1 | DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
仅时间
1 | DateTimeFormatter fmt = DateTimeFormatter.ofPattern("HH:mm:ss"); |
通过格式化字符串常量格式化
1 | LocalDateTime ldt = LocalDateTime.parse("2006-01-02T15:04:05Z", DateTimeFormatter.ISO_DATE_TIME); |
时间差
秒和纳秒
创建对象
1 | Duration duration = Duration.ofSeconds(1); |
计算两个时间的时间差
1 | LocalDateTime ldt1 = LocalDateTime.now(); |
获取秒和纳秒
1 | long seconds = duration.getSeconds(); |
日期和时间对象计算
1 | ldt.plus(duration); |
年月日
创建对象
1 | Period period = Period.ofDays(1); |
获取两个日期的时间差
1 | LocalDate ld1 = LocalDate.now(); |
获取年月日
1 | long years = period.getYears(); |
日期和时间对象计算
1 | ldt.plus(period); |