Javascript转换时间在Windows和Linux之间变得不同

时间:2012-07-31 04:18:54

标签: datetime

我在客户端转换了时间值,当我从同一个浏览器测试时:linux和windows上的chrome。

窗口:

    var d = new Date(1995,9,1,1,15,0,0) 
    d
    Sun Oct 01 1995 01:15:00 GMT+1300 (New Zealand Daylight Time)
    d.getTime()
    **812463300000**
    var d = new Date(1995,9,1,3,15,0,0) 
    d
    Sun Oct 01 1995 03:15:00 GMT+1300 (New Zealand Daylight Time)
    d.getTime()
    **812470500000**

linux:

 var d = new Date(1995,9,1,1,15,0,0) 
   d
   Sun Oct 01 1995 01:15:00 GMT+1200 (NZST)
   d.getTime()
   **812466900000**
   var d = new Date(1995,9,1,3,15,0,0) 
   d
   Sun Oct 01 1995 03:15:00 GMT+1300 (NZDT)
   d.getTime()
   **812470500000**

问题是安装在同一台Linux上的服务器将获得不同的毫秒值,我在客户端转换,下一步是服务器将服务器时区的值转换为字符串值。

我知道它应该通过在服务器端转换字符串值来解决,但如果我必须在客户端转换它,任何人都可以给我一个正确的方向来解决这个问题。

谢谢

2 个答案:

答案 0 :(得分:0)

不依赖于客户端(最终用户)时钟 - 按照您的说法在服务器上获取时间。 始终使用GMT / UTC,并且只在将其显示给某人时将其转换为当地时间。

答案 1 :(得分:0)

日期:

var d = new Date(1995,9,1,1,15,0,0)

将使用当前系统设置转换为本地时间。为了使所有内容保持一致,请从服务器发送自纪元以来的 UTC 时间并将其转换,例如:

new Date(812463300000); // Sat Sep 30 22:15:00 UTC+1000 1995
无论服务器位于何处或系统设置如何,

都将为完全相同的瞬间创建日期对象。