我有以下Javascript代码行:
var showTime = new Date( 'Oct 15, 2017 19:45:00' ).getTime(); // October 15, 2017 at 7:45 p.m. ET or 4:45 p.m. PT
我现在在ET时区(GMT-5或美洲/纽约)。所以我将showTime
变量设置为ET。但是,我希望showTime
var实际上反映的是太平洋海岸时间早3小时 - 在这种情况下是下午4:45。 Pac时间。我希望时间在全球得到修复和认可,并且不会根据当地时区进行抵消。
showTime
变量在全球各个时区的处理方式是否有所不同?如果根据当地机器的时区进行处理,您如何锁定时间为10/15/17,下午7:45。 ET普遍吗?
感谢。
答案 0 :(得分:1)
JavaScript Date对象的getTime()
方法返回UTC自1970年1月1日以来的毫秒数。这是通用时间,与当前用户的区域设置无关。
代码中唯一依赖于时区的部分是Date对象的实例化。
这使用当前用户的时区:
var showTime = new Date( 'Oct 15, 2017 19:45:00' ) // 1508114700000 - I'm in CDT currently.
由于您希望美国太平洋时区的时间,您应该将时区信息添加到日期字符串(10月15日仍然是白天时间,所以我使用的是PDT而不是PST,这是GMT-7) :
var showTime = new Date( 'Oct 15, 2017 19:45:00 GMT-0700' ) // 1508121900000
该字符串是特定于实现的,可能会破坏不同的浏览器和操作系统。支持ECMAScript 5的较新浏览器(不是IE 8)已经标准化了简化的ISO 8601(参见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse#Browser_compatibility和https://msdn.microsoft.com/en-us/library/ff743760%28v=vs.94%29.aspx)。该字符串看起来像:
var showTime = new Date( '2017-10-15T19:45:00-07:00' ) // 1508121900000
ISO 8601字符串将是最好的版本,如果您的项目只能支持ECMAScript 5实现(http://kangax.github.io/compat-table/es5/)。
答案 1 :(得分:0)
moment.tz.guess()
您获得服务器时区并消磨时间
这是bower package" moment-timezone":" ^ 0.5.7",