我正在使用Google App Engine。如果客户端发送的时间与服务器发送的时间之间的时差小于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;
所以基本上,我的问题是如何标准化时区变化?
谢谢
最佳答案
只需使用绝对unix time:System.currentTimeMillis()
。
该时间是绝对的,即自1970年1月1日(UTC午夜)以来没有毫秒),因此您可以简单地计算出差异。
关于java - 在Google App Engine/Java中计算时差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13737275/