gpt4 book ai didi

android - 如何处理服务器和 native android 应用程序之间的时区差异?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:07:39 25 4
gpt4 key购买 nike

假设我的服务器位于美国,而我住在俄罗斯。我们知道他们有不同的时区。

我的应用程序从服务器获取文本 (String)。并且这个文本数据在数据库中有Date列来保存记录日期。

当我获得数据时,我也获得了date知识。所以我可以按时间对它们进行分组。第一个在顶部,最后一个在底部。随便……

我编写了一个函数来显示更易于阅读的日期值,例如“13 小时”、“9 分钟”。服务器向我发送服务器(美国)时区的日期。

当我使用俄罗斯时区计算应用程序时间(因为它是应用程序的当前时区)时,它计算错误。所以,这不是任何人想要的东西。

我应该怎么做才能实现正确的计算?

注释:此应用程序将由不同国家的公民使用。所以我不能使计算静态化。

最佳答案

实际上并没有“俄罗斯时区”或“美国时区”之类的东西。这两个国家都有几个不同的时区。请参阅关于 Time in Russia 的维基百科文章和 Time in the USA .

您应该始终编写服务器代码,使其不依赖于服务器运行的时区。通常这是通过将所有时间存储为 UTC 来完成的。 .由于客户端是 Android 设备,只需在客户端与本地时间相互转换,只向服务器发送 UTC 时间或从服务器发送UTC 时间。

如果您使用 Java,您可能应该使用 Joda Time为您的转换。它比 Calendar 类更简洁、更易于使用。

更新

正如 Basil 在评论中指出的那样,Joda-Time 项目现在处于维护模式。该团队建议迁移到 JSR 310 定义的 java.time 类.对于早期的 Android,请参阅 ThreeTen-BackportThreeTenABP项目。参见 How to use… .

关于android - 如何处理服务器和 native android 应用程序之间的时区差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18169669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com