我正在使用Hibernate 5&的MySQL。
这是保存到数据库中的内容:2018-03-11 06:26:47.336
我不认为这是24小时格式,但那我怎么看AM / PM?如何以24小时格式节省时间?
在MySQL中运行SELECT @@global.time_zone;
向我展示:+00:00
所以我认为我准备接受UTC时间?这就是我设置我的pojo字段以设置时间的方法:
Clock clock = Clock.systemUTC();
LocalDateTime userCreated = LocalDateTime.now(clock);
接受LocalDateTime
。但是当我查询时从数据库返回的是:u1.getUserCreated(): 2018-03-11T01:26:47.336
当我尝试将时间转换为特定区域时,我得到以下内容:
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
答案 0 :(得分:3)
你只是没有正确转换。您的LocalDateTime表示UTC时区的挂钟时间。不在纽约时区。所以你需要将它转换为UTC ::
中的ZonedDateTimeZonedDateTime utcDateTime = u1.getUserCreated().atZone(ZoneOffset.UTC);
然后,如果你想在同一时刻获得一个ZonedDateTime,但是在纽约时区,那么,好吧,就这样做:
ZonedDateTime newYorkDateTime = utcDateTime.withZoneSameInstant(ZoneId.of("America/New_York"));