2016-04-13 37 views
2

我的问题是关于这句话从手动约日期在JavaScript时间戳:一致客户端的日期/使用JavaScript(考虑时区)

注:与Date构造函数(和 日期日期字符串的解析。解析,它们是等同的)由于 浏览器的差异和不一致而被强烈阻止。

new Date('2016-04-14')为用户输出的是Wed Apr 13 2016 17:00:00 GMT-0700 (US Mountain Standard Time),他必须使用.toUTCString()

如果用户处于许多不同的时区,该如何处理?

+4

使用timestamp'new Date()。getTime()'而不是字符串进行存储和比较 – gurvinder372

+0

那样我们就不需要使用'.toUTCString()'等类似的函数了? –

+0

除非你只想显示(为此也可以使用库进行格式化),我没有看到使用其他函数的任何理由。 – gurvinder372

回答

1

new Date().getTime();返回一个整数值作为客户机器上的时间,因为1970年1月1日。由于这是一个整数值,它将与语言环境,浏览器版本,不同浏览器(IE,Chrome,Mozilla或其他)无关。

因此,只要客户的时区已知,在客户机器的时间上,这应该会给您一致的结果

您可以获取客户端的时区使用getTimezoneOffset API

var x = new Date(); 
var currentTimeZoneOffsetInHours = x.getTimezoneOffset()/60; 

这连同new Date().getTime();应该给你一个一致的结果偏差。

1

如果使用

new Date().getTime(); 

它会回报你一个milisecond时间戳1970-01-01以来对客户端是在当前时区。然后可以在任何转换回日期语言。

如果您将它发送到服务器以及从服务器和客户端之间发送数据,这将是更好的标准日期传递方式。作为一个时区转换毫秒时间戳TS将转换为01/01/2010在时区B就转换为01/01/2010,因为它们是从1970-01-01

希望采取这使得SENCE

相关问题