如果我运行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)。
现在......如果我想要从01-01-1970 ...到29-06-2016 10:00:00 GMT-7的毫秒数怎么办?
我只找到方法告诉我在BST时区29-06-2016 10:00:00时GMT-7时区的时间,但这不是我想要的!
此外,要更改环境变量,因此时区为GMT-7不是一种选择。
答案 0 :(得分:2)
我认为您希望日期字符串采用以下格式
"2016-06-29T10:00:00-07:00"
这可以让你设置时区相对GMT(在时区上不是100%肯定,但是它的客户端因此取决于他们的语言环境)。
我有类似的事情,JS正在改变日期对象的时间,我找到的唯一方法是设置日期并设置它。
奖励信息,使用以下字符串格式从.NET DateTime获取此信息。
"yyyy-MM-ddTHH:mm:sszzz"
答案 1 :(得分:0)
我认为我找到了一种方法,使用moment.js建议使用ErikS:
// 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;