如何将JavaScript日期转换为不同的时区

时间:2016-06-29 11:26:40

标签: javascript date datetime timezone timestamp

如果我运行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不是一种选择。

2 个答案:

答案 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;