前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何构造一个 ZonedDateTime()

如何构造一个 ZonedDateTime()

原创
作者头像
张紫娃
修改2024-04-21 20:48:14
2200
修改2024-04-21 20:48:14
举报

now 【指定时区当前时间】

代码语言:javascript
复制
// 2024-04-21T20:29:24 执行如下代码
ZonedDateTime.now());                          //2024-04-21T20:29:24.583240700+08:00[Asia/Shanghai]
ZonedDateTime.now(ZoneId.of("Asia/Tokyo")));   //2024-04-21T21:29:24.583240700+09:00[Asia/Tokyo]
ZonedDateTime.now(Clock.systemUTC()));         //2024-04-21T12:29:24.583240700Z

of 【附上时区而已不换算】

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

ZonedDateTime.of(2019, 7, 7, 20, 18, 18, 888, ZoneId.of("Asia/Tokyo")));                            //2019-07-07T20:18:18.000000888+09:00[Asia/Tokyo]
ZonedDateTime.of(LocalDate.of(2019, 7, 7),LocalTime.of(20, 18, 18, 888),ZoneId.of("Asia/Tokyo")));  //2019-07-07T20:18:18.000000888+09:00[Asia/Tokyo]
ZonedDateTime.of(LOCAL_DATE_TIME, ZoneId.of("Asia/Tokyo")));                                        //2019-07-07T20:18:18.000000888+09:00[Asia/Tokyo]
ZonedDateTime.of(LOCAL_DATE_TIME, ZoneId.of("Asia/Shanghai")));                                     //2019-07-07T20:18:18.000000888+08:00[Asia/Shanghai]

parse 【没时区就纯类型转换,有时区就换算】

代码语言:javascript
复制
ZonedDateTime.parse("Sun Oct 01 00:00:00 EDT 2017",DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy").withLocale(Locale.US)));                  
// 2017-10-01T00:00-04:00[America/New_York]

ZonedDateTime.parse("Sun Oct 01 00:00:00 EDT 2017 GMT+0800",DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy 'GMT'Z").withLocale(Locale.US)));  
// 2017-09-30T12:00-04:00[America/New_York]

LOCAL_DATE_TIME 【存在时区转换】

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

ZonedDateTime.ofInstant(LOCAL_DATE_TIME.toInstant(ZoneOffset.ofHours(9)), ZoneOffset.ofHours(9)));
//2019-07-07T20:18:18.000000888+09:00
ZonedDateTime.ofInstant(LOCAL_DATE_TIME.toInstant(ZoneOffset.ofHours(9)), ZoneId.of("Asia/Tokyo")));
//2019-07-07T20:18:18.000000888+09:00[Asia/Tokyo]
ZonedDateTime.ofInstant(LOCAL_DATE_TIME.toInstant(ZoneOffset.ofHours(9)), ZoneId.of("Asia/Shanghai")));
//2019-07-07T19:18:18.000000888+08:00[Asia/Shanghai]
ZonedDateTime.ofInstant(LOCAL_DATE_TIME, ZoneOffset.ofHours(9), ZoneOffset.ofHours(9)));
//2019-07-07T20:18:18.000000888+09:00
ZonedDateTime.ofInstant(LOCAL_DATE_TIME, ZoneOffset.UTC, ZoneOffset.ofHours(9)));
//2019-07-08T05:18:18.000000888+09:00

LOCAL_DATE_TIME.atZone(ZoneId.of("Asia/Tokyo")));
//2019-07-07T20:18:18.000000888+09:00[Asia/Tokyo]  【附上时区而已不换算】

OFFSET_DATE_TIME

代码语言:javascript
复制
OffsetDateTime OFFSET_DATE_TIME = OffsetDateTime.of(2019, 7, 7, 20, 18, 18, 888, ZoneOffset.ofHours(9));

OFFSET_DATE_TIME.toZonedDateTime());
//2019-07-07T20:18:18.000000888+09:00    【时区和偏移量转换而已】

OFFSET_DATE_TIME.atZoneSameInstant(ZoneId.of("Asia/Tokyo")));
//2019-07-07T20:18:18.000000888+09:00[Asia/Tokyo]                  【存在时区转换】
OFFSET_DATE_TIME.atZoneSameInstant(ZoneId.of("Asia/Shanghai")));
//2019-07-07T19:18:18.000000888+08:00[Asia/Shanghai]               【存在时区转换】

OFFSET_DATE_TIME.atZoneSimilarLocal(ZoneId.of("Asia/Tokyo")));
//2019-07-07T20:18:18.000000888+09:00[Asia/Tokyo]                 【附上时区而已不换算】
OFFSET_DATE_TIME.atZoneSimilarLocal(ZoneId.of("Asia/Shanghai")));
//2019-07-07T20:18:18.000000888+08:00[Asia/Shanghai]              【附上时区而已不换算】

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • now 【指定时区当前时间】
  • of 【附上时区而已不换算】
  • parse 【没时区就纯类型转换,有时区就换算】
  • LOCAL_DATE_TIME 【存在时区转换】
  • OFFSET_DATE_TIME
  • Date 【当前时区】
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档