使用偏移变量从设备本地时间获取时间

get time from devices local time using offset variable

提问人:paul590 提问时间:8/1/2017 更新时间:8/1/2017 访问量:225

问:

您好,我正在使用为我提供对象 org.threeten.bp.OffsetDateTime 的 threeten 库。当我处于美国东部标准时间时,该应用程序运行良好,但是当我手动将设备更改为太平洋时间以确保正确显示时间时,我仍然获得美国东部时间。我以为使用这个对象时,对象会从设备获取当前时间和时区。我尝试了以下方法并获取了 EST 中的日期字符串。 有什么想法吗?谢谢你的帮助

法典:

OffsetDateTime time = OffsetDateTime.now();
Log.i(TAG, time.tostring());

输出: 2017-07-31T19:49:11.828-04:00

Android 时区偏移量 threetenbp

评论

1赞 8/1/2017
OffsetDateTime.now()使用 JVM 中配置的默认时区的当前偏移量。您没有指定如何更改设备的时间,但可能以不影响 JVM 配置的方式。您可以使用 检查 JVM 的默认值。获取此值以了解您的配置是否真的更改了 JVM 的默认时区。ZoneId.systemDefault().getId()
1赞 8/2/2017
所以它不会改变 JVM 的默认值。不幸的是,我从未这样做过,所以我不知道在设备中更改JVM默认值的正确方法(物理或设置设备配置)。虽然你也可以这样做,如果你只是想做一个测试(这对于JVM来说是变化的,但如果你重新启动系统,它就会丢失)TimeZone.setDefault(TimeZone.getTimeZone("Europe/Paris"))
1赞 paul590 8/3/2017
@Hugo 谢谢你的帮助,我最终这样做了,它奏效了!
1赞 8/3/2017
除了更改 JVM 默认值之外,您还可以这样做OffsetDateTime.now(ZoneId.of("Europe/Paris"))
1赞 paul590 8/3/2017
@Hugo好主意!再次感谢!我最终做了第一个选项,因为我有多个 offsetdatetime 变量

答: 暂无答案