如果我运行var myDate = new Date('29-06-2016 10:00')
, myDate
将只包含一个东西:一个数字。从01-01-1970 00:00:00 GMT到29-06-2016 10:00:00 XXX的毫秒数
XXX为操作系统的时区。在我的例子中,BST
(因为它是一个夏天的日期,在冬天将是GMT)。
现在…如果我想要从1970年1月1日开始的毫秒数……到2016年6月29日10:00:00 GMT-7?
我只找到方法来告诉我什么时间是在GMT-7时区,而在BST时区是2016-06-29 10:00:00,但这不是我要找的!
另外,不能将环境变量更改为GMT-7时区。
我认为您需要以下格式的日期字符串
"2016-06-29T10:00:00-07:00"
允许您设置相对GMT时区(不是100%确定时区,但它是客户端,因此确实取决于他们的区域设置)。
我有一个类似的事情,JS正在改变日期对象的时间,我发现的唯一方法是设置日期并设置这个。
额外的信息,从使用以下字符串格式的。net DateTime获取。
"yyyy-MM-ddTHH:mm:sszzz"
我想我找到了一种方法,使用moment.js作为erik的建议:
// This code is running in a Node.js server configured to use UTC
// Incorrect date, as it is interpret as UTC.
// However, we do this to get the utcOffset
var auxDate = moment.tz(new Date('2016-6-23 10:15:0'), 'US/Mountain');
// Get the milliseconds since 1970 of the date as if it were interpreted
// as GMT-7 or GMT-6 (depends on the date because of Daylight Saving Time)
var milliseconds = auxDate.valueOf() - auxDate.utcOffset() * 60000;