如何构造一个 OffsetDateTime()

2024-07-31 08:04:00 浏览数 (2)

now 【指定时区 当前时间】

代码语言:java复制
// 2024-04-21T18:18:35 执行如下代码
OffsetDateTime.now());                         // 2024-04-21T18:18:35.161056700 08:00
OffsetDateTime.now(ZoneId.of("Asia/Tokyo")));  // 2024-04-21T19:18:35.162570500 09:00
OffsetDateTime.now(Clock.systemUTC()));        // 2024-04-21T10:18:35.162570500Z     

of 【给时间 附上偏移量而已 没时区换算】

代码语言:java复制
OffsetDateTime.of(2019, 7, 7, 20, 18, 18, 888, ZoneOffset.ofHours(9)));                              // 2019-07-07T20:18:18.000000888 09:00  【指定时区】
OffsetDateTime.of(LocalDate.of(2019, 7, 7), LocalTime.of(20, 18, 18, 888), ZoneOffset.ofHours(9)));  // 2019-07-07T20:18:18.000000888 09:00  【指定时区】

LocalDateTime LOCAL_DATE_TIME = LocalDateTime.of(2019, 7, 7, 20, 18, 18, 888);
OffsetDateTime.of(LOCAL_DATE_TIME, ZoneOffset.ofHours(9)));                                          //2019-07-07T20:18:18.000000888 09:00  【指定时区】
OffsetDateTime.of(LOCAL_DATE_TIME, ZoneOffset.ofHours(8)));                                          //2019-07-07T20:18:18.000000888 08:00  【指定时区】

ofInstant 【存在时区转换】

代码语言:java复制
LocalDateTime LOCAL_DATE_TIME = LocalDateTime.of(2019, 7, 7, 20, 18, 18, 888);

OffsetDateTime.ofInstant(LOCAL_DATE_TIME.toInstant(ZoneOffset.ofHours(9)), ZoneOffset.ofHours(9))); //2019-07-07T20:18:18.000000888 09:00
OffsetDateTime.ofInstant(LOCAL_DATE_TIME.toInstant(ZoneOffset.ofHours(9)), ZoneOffset.ofHours(8))); //2019-07-07T19:18:18.000000888 08:00

parse 【纯类型转换而已】

代码语言:java复制
OffsetDateTime.parse("2019-07-07T20:18:18.000000888 09:00")); //2019-07-07T20:18:18.000000888 09:00
OffsetDateTime.parse("2019-07-07T20:18:18 09:00"));           //2019-07-07T20:18:18 09:00
OffsetDateTime.parse("2019-07-07T20:18 09:00"));              //2019-07-07T20:18 09:00

LocalDateTime 【给时间 附上偏移量而已 不换算】

代码语言:java复制
LocalDateTime LOCAL_DATE_TIME = LocalDateTime.of(2019, 7, 7, 20, 18, 18, 888);
LOCAL_DATE_TIME.atOffset(ZoneOffset.ofHours(9)));   //2019-07-07T20:18:18.000000888 09:00
LOCAL_DATE_TIME.atOffset(ZoneOffset.ofHours(8)));   //2019-07-07T20:18:18.000000888 08:00

ZonedDateTime 【时区 和 偏移量 转换而已】

代码语言:java复制
ZonedDateTime ZONED_DATE_TIME = ZonedDateTime.of(2019, 7, 7, 20, 18, 18, 888, ZoneId.of("Asia/Tokyo"));
ZONED_DATE_TIME.toOffsetDateTime()); //2019-07-07T20:18:18.000000888 09:00

Date 【存在时区转换】

代码语言:javascript复制
Date DATE = new Date(1562501898000L);

DATE.toInstant().atZone(ZonedDateTime.now().getZone()));   //2019-07-07T20:18:18 08:00[Asia/Shanghai]
DATE.toInstant().atZone(ZonedDateTime.now().getOffset())); //2019-07-07T20:18:18 08:00

0 人点赞