【发布时间】:2015-10-10 17:31:59
【问题描述】:
我想将时区从本地时区更改为在我的应用程序中使用 UTC。代替本地时间,我需要获取 UTC 时间,这与 Joda 日期时间完美配合。但问题是当我在 Windows 上更改系统时间时,比如时钟上的负 1 小时,UTC 时间返回一个小时后的值。所以我认为UTC时间是根据系统时间计算的。例如:系统时间为 3:00 PDT,UTC 显示为 10:00。当我将系统时间更改为 4:00 PDT 时,UTC 为 11:00。尽管系统时间已更改,但 UTC 仍应显示当前 UTC 时间,而不是基于系统时间。看起来偏移量是根据系统时间计算得出的 UTC。
DateTime mypdt = new DateTime();
DateTime myutc = new DateTime(DateTimeZone.UTC);
System.out.println("mypdt--> "+mypdt);
System.out.println("myutc--> "+myutc);
输出是
mypdt--> 2015-07-21T03:00:14.778-07:00
myutc--> 2015-07-21T10:00:14.828Z
我在 Windows 机器上将系统时间更改为 4:00,现在输出为
mypdt--> 2015-07-21T04:00:14.778-07:00
myutc--> 2015-07-21T11:00:14.828Z
但实际的 UTC 仍然是 10:00。如何获得不使用系统时间的 UTC,因为系统时钟将在 DST 期间重置,这就是我要解决的问题。
【问题讨论】: