首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 8,时间没有被转换

Java 8,时间没有被转换
EN

Stack Overflow用户
提问于 2018-03-11 21:59:22
回答 1查看 53关注 0票数 1

我使用Hibernate 5& MySQL。

这就是保存到数据库中的内容:2018-03-11 06:26:47.336 --我不认为这是24小时格式,但是如何查看AM/PM呢?如何以24小时格式节省时间?

运行SELECT @@global.time_zone; in MySQL向我展示了:+00:00,所以我认为我已经准备好接受UTC的时间了?这就是我如何设置pojo字段来设置时间的方法:

代码语言:javascript
复制
Clock clock = Clock.systemUTC();        
LocalDateTime userCreated = LocalDateTime.now(clock);

它接受LocalDateTime。但是,当我查询时,从数据库中得到的是:u1.getUserCreated(): 2018-03-11T01:26:47.336,当我试图将时间转换为特定于区域的时间时,我得到以下内容:

代码语言:javascript
复制
ZonedDateTime z1 = ZonedDateTime.of(u1.getUserCreated(), ZoneId.of("America/New_York"));
System.out.println("z1: " + z1); 
// z1: 2018-03-11T01:26:47.336-05:00[America/New_York]

但实际上应该是:9:26:47.336 PM (21:26:47.336),正如您在这个站点上看到的:http://www.timebie.com/std/utc.php

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-11 22:45:02

你只是没有正确地转换。您的LocalDateTime表示UTC时区中的挂钟时间。不在纽约时区。因此yo需要在UTC中将其转换为ZonedDateTime::

代码语言:javascript
复制
ZonedDateTime utcDateTime = u1.getUserCreated().atZone(ZoneOffset.UTC);

然后,如果您想在同一时间内获得一个ZonedDateTime,但是在纽约时区,那么,只需这样做:

代码语言:javascript
复制
ZonedDateTime newYorkDateTime = utcDateTime.withZoneSameInstant(ZoneId.of("America/New_York"));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49225581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档