【发布时间】:2021-07-29 06:27:07
【问题描述】:
我正在寻找最简单、最简洁的方法来修复 Android 应用中所有日期的时区。这个想法是让应用程序像用户在另一个时区一样运行。让我澄清一下我在寻找什么:
假设用户的手机设置为 America/New_York,那么我希望我的应用程序显示欧洲/阿姆斯特丹时区的所有日期(以 UTC 为单位),而不管手机本身设置的时区如何。如果我与 new Date() 进行比较,如果 new Date() 也处于欧洲/阿姆斯特丹时区的当前时间,那就太好了。
在互联网上搜索解决方案后,我开始觉得我必须更新我的应用程序中使用 Date 的每个地方并强制使用目标时区,就像这个 stackoverflow 帖子的解决方案:@ 987654321@
有人知道如何以更简单、更清洁的方式完成这项工作吗?
【问题讨论】:
-
使用 Java 8 中引入的现代时间类。(LocalDateTime、ZonedDateTime 等)
-
如果
new Date()是指java.util.Date- 该对象纯粹是UTC。它根本没有时区。此外,您应该通过ThreeTenABP 或更新的desugaring support 使用java.time.*API。 -
如果我与 new Date() 进行比较,如果 new Date() 也处于欧洲/阿姆斯特丹时区的当前时间,那就太好了。 老式的
Date永远不会在任何特定的时区,所以这是不可能的。 -
这或许能回答你的问题吗? How to set a JVM TimeZone Properly。我知道这不是专门针对 Android 的。
标签: java android kotlin timezone