我碰壁了。
我正在从服务器下载加密的关卡数据(由我创建的关卡创建者制作)。
关卡数据存储了使用long Java的数据的最后更新版本。
现在要更新关卡,我使用 php 下载可用关卡的列表以及上次修改文件的时间。
很多人会说我必须将时间存储在其他地方,比如 json。这不是一个选择。
我得到以下结果:
Fri May 08 23:05:24 CEST 2015 | timeStampJava: 1431119124273
Sat Jan 17 14:31:58 CET 1970 | fileTimeStampPHP(filemtime): 1431118989
OLLY:LOG: ---
Fri May 08 23:05:28 CEST 2015 | timeStampJava: 1431119128871
Sat Jan 17 14:31:58 CET 1970 | fileTimeStampPHP(filemtime): 1431118989
OLLY:LOG: ---
Fri May 08 23:05:32 CEST 2015 | timeStampJava: 1431119132288
Sat Jan 17 14:31:58 CET 1970 | fileTimeStampPHP(filemtime): 1431118989
OLLY:LOG: ---
Fri May 08 23:05:35 CEST 2015 | timeStampJava: 1431119135289
Sat Jan 17 14:31:58 CET 1970 | fileTimeStampPHP(filemtime): 1431118989
OLLY:LOG: ---
Fri May 08 23:05:38 CEST 2015 | timeStampJava: 1431119138807
Sat Jan 17 14:31:58 CET 1970 | fileTimeStampPHP(filemtime): 1431118989
我正在尝试使用以下方法比较两者:
if(serverLevelInfo.last_updated > localLevelStorage.getLastUpdated())
问题是如果我沮丧,即
phpTimeStamp > (int)javaTimeStamp
它会产生完全不准确的结果。
现在做什么?
编辑 1
尝试的建议:
//TODO Problem PHP int timestamp to java long timestamp.
PolyUtils.log((long)(serverLevelInfo.last_updated * 1000));
PolyUtils.log(localLevelStorage.getLastUpdated());
PolyUtils.log("---");
结果(错误)
OLLY:LOG: 894879432
OLLY:LOG: 1431119124273
OLLY:LOG: ---
OLLY:LOG: 894879432
OLLY:LOG: 1431119128871
OLLY:LOG: ---
OLLY:LOG: 896347432
OLLY:LOG: 1431119132288
OLLY:LOG: ---
OLLY:LOG: 894879432
OLLY:LOG: 1431119135289
OLLY:LOG: ---
OLLY:LOG: 894879432
OLLY:LOG: 1431119138807
OLLY:LOG: ---
最佳答案
不幸的是,唯一的解决办法是你必须在 JAVA long 上失去一些准确性。这是因为 PHP 无法生成长整型(32 位标量变量。)
if(serverLevelInfo.last_updated > (int)(localLevelStorage.getLastUpdated() / 1000))
确保在你从 long 中取出 length 之后你转换 int 否则你会不准确。
关于java - 比较 PHP 时间戳(int)和 java 时间戳(长),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30133054/