我撞到了一堵砖墙。
我正在从服务器下载加密级别数据(由我创建的关卡创建者制作)。
级别数据使用Java来存储数据的最新更新版本。
现在要更新关卡,我会使用php下载一个可用关卡列表及其上次修改时间。
很多人会说我必须将时间存储在其他地方,比如json。这不是一种选择。
我得到以下结果:
1> c:\home\dima\trws\trw_s-v1.3\trws\test\vector.cpp(7) : info C5002: loop not vectorized due to reason '1200'
1> c:\home\dima\trws\trw_s-v1.3\trws\test\vector.cpp(13) : info C5001: loop vectorized
1> c:\home\dima\trws\trw_s-v1.3\trws\test\vector.cpp(19) : info C5001: loop vectorized
我正在尝试比较两者:
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())
它会产生完全不准确的结果。
现在做什么?
修改1
尝试的建议:
phpTimeStamp > (int)javaTimeStamp
结果(错误)
//TODO Problem PHP int timestamp to java long timestamp.
PolyUtils.log((long)(serverLevelInfo.last_updated * 1000));
PolyUtils.log(localLevelStorage.getLastUpdated());
PolyUtils.log("---");
答案 0 :(得分:1)
不幸的是,唯一的解决方案是你必须在JAVA上失去一些准确性。这是因为PHP无法生成长片(32位标量变量。)
if(serverLevelInfo.last_updated > (int)(localLevelStorage.getLastUpdated() / 1000))
确保你在长时间取长之后施放int,否则你将会出现不准确之处。
答案 1 :(得分:0)
你需要将unix时间戳(php)乘以1000,因为java需要几毫秒。
java.util.Date time=new java.util.Date((long)timeStamp*1000);