我需要转换德国本地时间记录,没有区域信息,即
var data = [
"2017-12-02 20:27:02",
"2017-12-02 20:50:00"
]
到UTC记录,即减去时区偏移并尊重夏令时。我知道有getTimezoneOffset
和toISOString
函数,如果我的系统区域设置设置为德语,它将起作用。例如,我可以使用
var d = new Date(data[0])
> Sat Dec 02 2017 20:27:02 GMT+0100 (CET)
d.toISOString()
> '2017-12-02T19:27:02.000Z'
但是,我需要一个安全的解决方案,适用于任何具有任何语言环境的服务器,例如,在云端。
答案 0 :(得分:0)
感谢yBrodsky的评论我找到了使用moment-timezone
的解决方案:
moment = require("moment-timezone")
var d = moment.tz(data[0], "Europe/Berlin").toDate()
d.toISOString()
> '2017-12-02T19:27:02.000Z'
答案 1 :(得分:0)
您可以使用moment.js
在JavaScript中进行日期计算。要解析特定时区的日期,您还需要moment.js timezone
。然后,您可以使用tz()
函数中的格式解析日期。然后,该日期可用作moment
对象,您可以使用所有moment.js
功能(例如时间/日期计算,格式设置等)。请参阅以下示例:
var dateString = '2017-12-02 20:27:02';
var dateFormat = 'YYYY-MM-DD HH:mm:ss';
var date = moment.tz(dateString, dateFormat, "Europe/Berlin");
console.log(date.format());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.14/moment-timezone-with-data.min.js"></script>