我碰到了一堵砖墙。比较PHP时间戳(int)和java时间戳(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: ---
您的JS时间戳以毫秒为单位,PHP时间戳以秒为单位。而你的毫秒值比PHP中32位有符号整数所表示的最大时间要大得多,因此你的1970年的日期。所以基本上你需要'$ php_timestamp = $ js_timestamp/1000;' –
这是JAVA不是Javascript :-) –
无论哪种方式,这是毫秒。 –