好吧,我似乎不明白发生了什么,所以我决定问你们。在PHP中,我使用以下代码获取UTC时间戳:
date_default_timezone_set("UTC");
time()
例如,这将给我1331065202
然后我用Java编写了这段代码来获取UTC时间戳:
long timestamp = System.currentTimeMillis() / 1000;
例如,这将给我1331093502
为什么两次如此不同?他们不应该都在UTC时区吗?还是我做错了什么?我在VPS上托管,这些涂鸦在两个不同的服务器上,所以它可能是服务器端的东西吗?如果是,我该怎么办?
考虑到这两个值相差很大(甚至不是整数小时),我认为其中一台机器上的时钟是错误的。(我假设你几乎在同一时间获得了两个时间戳。)
这些时间戳是:
- PHP:2012年3月6日星期二20:20:02 GMT
- 爪哇:2012年3月7日星期三格林尼治标准时间04:11:42
考虑到现在是格林尼治标准时间3月27日的而不是,Java机器上的时钟看起来只是设置错误。
如果这是一个真正的VPS,你可以完全控制它,你应该考虑使用NTP或类似的东西来保持服务器的时钟正确。
正如上面的人所写的那样。使用ntp。如果你的VPS在你的控制之下,它是debian/ubuntu。下面的shell脚本将安装它。
sudo apt-get install ntp
它将在安装后启动ntp,但如果您想确保守护进程正在运行
/etc/init.d/ntp restart
希望能有所帮助。
这些纸条在两个不同的服务器上
这里有一条线索:你的两个服务器设置了不同的时间。
如果您需要Java和PHP应用程序同步,请考虑让两个服务器都使用网络时间协议。