【发布时间】:2013-09-15 18:41:42
【问题描述】:
所以我有本地时间字符串以“hh:mm:ss”的格式发送到服务器。 有没有办法确定客户端的时区?
到目前为止,我可以使用 DateTimeFormatter 将字符串转换为 joda DateTime 并获取与 timeZone UTC 相关的偏移量,但这可能不准确,因为在客户端上采用的时间戳与计算的时间之间会有延迟发生在服务器上(例如,如果客户端发送的时间是 11:59:59 +01:00,它在服务器上延迟 2 秒到达,计算将大致具有以下形式:11:59:59 - 11: 00:01 = 0 小时偏移,这是错误的)。
除了强制客户端发送 timeZone 而不是 localTime 之外,还有什么建议吗?
【问题讨论】:
-
做减法时不要只使用小时数。 11:59:59-11:00:01 应该给你一个 3598 秒的偏移量,而不是 0 小时的偏移量。然后,当您将 3598 秒转换为小时时,将其四舍五入到最接近的小时。只要没有 30 分钟的沟通延迟,并且您还有其他问题,这将起作用。