【发布时间】:2012-12-06 05:03:43
【问题描述】:
我正在开发谷歌应用引擎。如果客户端发送的时间与服务器上的时间之间的时间差小于 15 秒,我正在做一些需要我做的事情。当我在测试服务器(在我自己的机器上)上尝试时,该代码运行良好。但是当我将代码部署在应用程序引擎上时失败。我猜这可能是因为如果服务器上的时区不同,那么发生这种情况时可能会增加/减少几个小时。
我基本上做的是让客户发送他的时间戳以及其他数据。当服务器随后需要计算时差时,我会从客户端的时间戳中减去服务器的时间戳。
如果时区不同,那么显然我会遇到问题。
我知道避免此时区惨败的一种解决方案是让服务器为初始请求和稍后的后续处理添加时间戳,但对于我的应用程序,定时器必须从客户端发出请求时开始计时并且如果 15 秒过去了,对于客户端,那么服务器不会采取任何行动。
由于我是客户端和服务器端的开发人员,我可以向您展示我所做的工作。
客户端调用示例
new Register().sendToServer(username,location,new TimeStamp(new Date().getTime()));
这存储在数据存储中,如果满足某些条件,稍后再检索。
服务器端样本找出差异
Date date= new Timestamp(new Date().getTime());
Date d1 = (Date) timeStampList[i];
long timedif = Math.abs(d1.getTime() - date.getTime());
if(timedif <= 15000)
do something;
else
do something else;
所以基本上,我的问题是如何标准化时区变化?
谢谢
【问题讨论】:
-
这与时区无关:getTime 返回自格林威治标准时间 1/1/1970 午夜以来的毫秒数。当您打印出 timedif 时,您会得到什么?是30秒还是三个小时?可能只是您的时钟和服务器关闭了 15 秒以上。
标签: java google-app-engine localization timezone timezone-offset