12

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

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

当我得到数据时,我也得到date了知识。所以我可以按时间分组。第一个在顶部,最后一个在底部。任何...

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

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

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

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

4

5 回答 5

6
于 2013-08-11T19:47:41.687 回答
2

只要您知道服务器和客户端使用哪个时区,Calendar 类就可以在时区之间转换时间。为避免将来移动服务器时出现问题,最好定义数据库中的时间。我更喜欢使用 UTC 作为它的标准,但你可以使用任何你想要的时区,只要它在你的文档中定义,这样你将来就会知道。

这是一个显示如何做到这一点的问题: Date and time conversion to some other Timezone in java

于 2013-08-11T07:22:55.050 回答
1
于 2017-12-15T16:03:11.087 回答
0

我不知道如何以编程方式实现这一点,但我知道可以做到:) ...也许您应该尝试一种策略,根据 GMT 时间保存所有记录,然后在客户端制定公式它检查客户端的时区,然后如果它是负时区,则从当前时间记录中替换该数量,如果是正时区,则将该数量添加到时间记录中,这样它将根据以下方式显示给客户端那里的时区.....(原谅我的语法:)希望它可以)

于 2013-08-11T08:31:44.830 回答
0

如果您在 Java 8 之前使用 Java,您可能应该使用 Joda Time 进行转换。看看这个问题:Date and time conversion to some other Timezone in java

如果您正在使用 Java 8 和更新版本(或者如果您计划在您的公司中开始升级过程),Java 8 包含一个适当的日期/时间库,并且 Joda 的创建者建议切换到使用它。看看这个问题:Joda Time - Convert UTC DateTime to Date - Using a Version 1.2.1.1 of Joda

于 2017-12-15T09:59:20.027 回答