两台机器中的两个UNIX TIMESTAMP之间的区别是不同的?

时间:2013-12-01 10:11:10

标签: javascript

我有一个脚本从javascript代表当前时间的时间戳中减去unix时间戳:

  var d1=new Date(1385890985000);//UNIX TIMESTAMP IN MILLISECONDS 
  var d2=new Date();

  var t1=d1.getTime();
  var t2=d2.getTime();

      if(t2-t1<60*60*1000)//1 hour
      {        
        alert(Math.floor((t2-t1)/60000)+" minute ago");                 
      } 
      else if(t2-t1<24*60*60*1000)//24 hours
      {        
        alert(Math.floor((t2-t1)/3600000)+" hour ago");                
      }

脚本可以显示分钟或小时的时间差异,例如10分钟前或7小时前等。我已经在当地时区或任何其他时区进行了测试,发现它没问题!但是今天在我的大学实验室里,当我在一些机器上尝试它时,再次对两台具有不同时区的机器感到失望,这些机器显示出不同的区别:一个显示6小时前,另一个显示6分钟前虽然它不应该不是这样的。因为UNIX时间戳只不过是从1970年1月1日开始的秒数。这里有什么问题?任何建议,提示或课程的话都表示赞赏!所有机器都是安装了Windows XP的lenovo桌面。

1 个答案:

答案 0 :(得分:0)

正如你所说,你从Date#getTime得到的时间值是毫秒级,因为它不受时区影响。

我能看到的唯一解释(道歉,观察错误或测试错误除外)是您获得惊人结果的机器被设置为错误的时间(而不仅仅是时区) )。 new Date()依赖于计算机当前时间的正确性。在将各种机器设置为各种不同时区的实验室中,似乎很容易相信其中一个机器可能设置了错误的时间。

您可以考虑更新测试以提供计算机认为的UTC时间:

alert("This computer believes the current time, in UTC, is " + new Date().toUTCString());

我希望你会发现这两台机器(一台机器说六小时,一台机器就说六分钟)不认为是同一时间。