我们的应用程序在中心位置使用服务器,这些服务器有自己的服务器时间。我们的用户覆盖了整个世界。每次我们需要处理页面打印,或者需要计算年龄(到当天)或需要客户端时间的任何其他事情时,我们通过浏览器发送客户端时间并将其存储在Java中的Date对象中并且正在工作在那里。
有时我们只是在客户端的JavaScript中执行此操作,如果它是一个不需要重复的独特案例。标准化一种仅通过线路发送日期和时间并在服务器上使用它的方法会很好。我只想在会话中保留变量并使用自会话创建以来的时间。
我很好奇是否有其他人已经处理过这个并想出一个聪明的处理方法,我相信我们不是第一个处理这个小麻烦的人。
也可能只是在需要时发送客户日期实际上是最好的方法,而不是试图过于复杂的相对简单的事情。我现在更倾向于那个。这意味着我基本上什么都不做......我很少反对做= D
答案 0 :(得分:4)
如果你绝对想要避免在每次发送需要它的请求时发送客户端的当前时间,这在计算时间和IMO带宽上都不是很高,为什么不检索客户端? timezone一次并将其存储在会话中,然后在每次需要时使用它来计算服务器端的时间?
对我而言,这比使用会话创建时更容易,也更清晰。
您可以使用以下方法检索客户端的时区偏移量:
dateObj.getTimezoneOffset()
以分钟为单位返回客户端时区的偏移量(例如,如果您的时区为UTC + 10(澳大利亚东部标准时间),则返回-600)。