Java时间戳和PHP时间戳给出了两个不同的时间

时间:2012-03-06 20:29:00

标签: java php timezone timestamp

好吧,我似乎无法弄清楚发生了什么,所以我决定问你们。在PHP中,我使用以下代码获取UTC时间戳:

date_default_timezone_set("UTC");
time()

这将例如给我1331065202

然后我在Java中使用此代码来获取UTC时间戳:

long timestamp = System.currentTimeMillis() / 1000;

这将例如给我1331093502

为什么两次如此不同?它们不应该是UTC时区还是我做错了什么?我是在VPS上托管的,这些文章在两个不同的服务器上,所以它可能是服务器端的东西,如果是这样,我该怎么办?

3 个答案:

答案 0 :(得分:4)

鉴于两个值狂野不同(甚至不是整数小时),我会说其中一台机器上的时钟是错误的。 (我假设您在几乎同时拍摄了两个时间戳。)

这些时间戳是:

  • PHP:Tue Mar 06 20:20:02 GMT 2012
  • Java:Wed Mar 07 04:11:42 GMT 2012

鉴于GMT中的 3月27日,看起来Java机器上的时钟设置不正确。

如果你完全控制它是真正的VPS,你应该考虑使用NTP或类似的东西来保持服务器的时钟正确。

答案 1 :(得分:2)

正如上面的人已经写过的那样。使用ntp。 如果你的VPS在你的控制之下,那就是debian / ubuntu。以下shell脚本将安装它。

    sudo apt-get install ntp

安装后会启动ntp,但是如果你想确保守护进程正在运行

    /etc/init.d/ntp restart

希望有所帮助。

答案 2 :(得分:0)

  

这些文章在两个不同的服务器上

有一个线索,就在那里:你的两台服务器设置了不同的时间。

如果您需要同步Java和PHP应用程序,请考虑让两台服务器都使用Network Time Protocol