我在客户端转换了时间值,当我从同一个浏览器测试时: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上的服务器将获得不同的毫秒值,我在客户端转换,下一步是服务器将服务器时区的值转换为字符串值。
我知道它应该通过在服务器端转换字符串值来解决,但如果我必须在客户端转换它,任何人都可以给我一个正确的方向来解决这个问题。
谢谢
答案 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
无论服务器位于何处或系统设置如何,都将为完全相同的瞬间创建日期对象。