如果我在一般的Java程序中这样做:
OffsetDateTime offsetDateTime = OffsetDateTime.now();
然后我的输出为2020-04-01T20:22:04.604 + 02:00。
如果我在Android上执行相同操作,则输出为[[2020-04-01T18:22:04.604Z。
也具有格式化为local_time的时间:String format = DateTimeFormatter.ISO_LOCAL_TIME.format(now);
输出为但是我想从now()开始我的本地DateTime18:22:04.604
20.22
,而不是UTC时间。Android中的系统时区为欧洲夏令时+02:00。这里发生了什么?
now
方法: OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneId.of("Europe/Vienna"));
System.out.println(offsetDateTime);
我刚刚跑步时的输出:2020-04-04T09:02:05.059927 + 02:00提供时区可以使我们摆脱对JVM缺省时区的依赖。
如果我正确理解了您的问题,则JVM时区设置未反映您设备的时区设置。两者可能会有所不同,但是我无法确定您的情况如何。可能的解释包括:
user.timeaone
等于UTC的设置下启动的。TimeZone.setDefault()
,将程序中的某个位置或在同一JVM中运行的其他程序中的时区设置为UTC。>