将PHP时间戳(int)与java时间戳(long)进行比较

时间:2015-05-08 21:21:55

标签: java php time int long-integer

我撞到了一堵砖墙。

我正在从服务器下载加密级别数据(由我创建的关卡创建者制作)。

级别数据使用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("---");

2 个答案:

答案 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);