Jus*_*ork 11 timezone android android-date
假设我的服务器位于美国,我住在俄罗斯.我们知道他们有不同的时区.
我的应用程序String
从服务器获取text().而这个文本数据Date
在数据库中有列保存记录日期.
当我获得数据时,我也获得了date
知识.所以我可以按时间分组.顶部的第一个和底部的最后一个.随你...
我写了一个函数来显示日期值更人性化,如"13小时","9分钟".服务器在服务器(美国)时区发送日期.
当我用俄罗斯时区计算申请时间时(因为它是申请时的当前时区),它计算错误.所以,这不是任何人想要的东西.
我该怎么做才能实现正确的计算?
注释:此应用程序将由不同国家的公民使用.所以我无法使计算静态.
没有"俄罗斯时区"或"美国时区"这样的东西.这两个国家都有几个不同的时区.参见维基百科文章的时间在俄罗斯和美国的时间.
您应该始终编写服务器代码,使其不依赖于运行服务器的时区.通常这是通过将所有时间存储为UTC来完成的.由于客户端是Android设备,只需在客户端上转换为本地时间,从服务器发送UTC或从服务器发送UTC.
如果您使用的是Java,那么您应该使用Joda Time进行转换.它比Calendar
同类更清洁,更容易使用.
更新
正如Basil在评论中指出的那样,Joda-Time项目现在处于维护模式.该团队建议迁移到JSR 310java.time
定义的类.对于早期的Android,请参阅ThreeTen- Backport和ThreeTenABP项目.请参阅如何使用.......
Calendar 类可以在时区之间转换时间,只要您知道服务器和客户端使用哪个时区即可。为了避免将来在移动服务器时出现问题,最好定义数据库中的时间应该是什么。我更喜欢使用 UTC 作为其标准,但您可以使用任何您想要的时区,只要它在您的文档中定义即可,以便您将来知道。
这是一个显示如何执行此操作的问题: Date and time conversion to some other Timezone in java
归档时间: |
|
查看次数: |
6717 次 |
最近记录: |