0

在我的程序中,我已将默认设置TimeZoneTimeZone用户登录时的用户。

我正在使用这条线来设置TimeZone

TimeZone.setDefault(TimeZone.getTimeZone(usersTimeZoneInMilliSecond)) ;

但是我注意到TimeZone当另一个人从另一个区域登录时,一个人的位置会更改为另一个位置。

这样,从世界不同地区登录的每个人都将获得timezone最后一个登录的人。

谁能帮我理解为什么会发生这种情况,或者我该如何避免这种情况。

我取出getTimezoneOffsetusing javaScript,我需要在随后的程序中的所有其他地方使用该值。它是必需的,因为我正在开发类似日历的视图,并且应用程序需要知道他们看到的日期,而不是 UTC 或服务器时间。

4

3 回答 3

2

TimeZone.setDefault(TimeZone.getTimeZone(usersTimeZoneInmilliSecond)) ; 它会更改作为静态参考的整个应用程序的时区。要为不同的用户维护不同的时间戳,您需要使用Date对象。

于 2013-11-14T11:17:24.230 回答
2

您的代码更改了静态*默认* 时区。如果您只想为特定用户更改它,则需要将其保存在仅针对每个用户的非静态变量中。

检查TimeZone.setDefault javadoc。

为了为每个用户保存时区,这取决于您正在运行什么程序以及在什么环境中。

如果是基于 Web 的环境,我认为将时区 ID 存储为 Session 属性是最好的主意。

于 2013-11-14T11:07:10.863 回答
1

通过调用TimeZone.setDefault(..)您更改时区的默认设置,因此此更改不限于一个特殊用户,如果他们要求默认值,它会影响所有用户。

于 2013-11-14T11:07:06.833 回答