矩时区解析给定的时区

Rou*_*ouz 5 javascript node.js momentjs

使用moment-timezone解析Date对象时出现问题

问题

我正在创建一个nodejs应用,该应用应从数据库中任意时间检查新的Date()对象(并采取相应措施)。时间和时区都保留在数据库中。

在例子中

time | timezone
11:00| US/Eastern
Run Code Online (Sandbox Code Playgroud)

当进行REST调用时,我必须获取新的Date()对象并将其转换为给定的时区,然后查看当前时间是否晚于9am。但是服务器时区和持久时区不同。

问题

我这样创建今天的日期字符串

function getTodaysDate() {
    var today = new Date(),
        dd = today.getDate(),
        mm = today.getMonth()+1,
        yyyy = today.getFullYear();

    if(dd<10) {
        dd='0'+dd
    }

    if(mm<10) {
        mm='0'+mm
    }

    return yyyy +'-' + mm + '-' + dd;

}
Run Code Online (Sandbox Code Playgroud)

并尝试使用moment-timezone创建Timestamp对象

startTime = moment.tz(new Date(getTodaysDate() + ' ' + '11:00'), 'US/Eastern');
Run Code Online (Sandbox Code Playgroud)

但是框架正确地获取了日期并将其转换为美国/东部时区。

所以当我打印startTime.format();

我懂了

2016-08-01T07:00:00-04:00
Run Code Online (Sandbox Code Playgroud)

我想

2016-08-01T11:00:00-04:00
Run Code Online (Sandbox Code Playgroud)

那么,有没有一种方法可以使用moment-timezone包设置日期和时间,并将其视为给定的时区?

Rou*_*ouz 3

所以问题是

startTime = moment.tz('here the date goes', 'US/Eastern');
Run Code Online (Sandbox Code Playgroud)

要么是期望 ISO 格式,要么是手动格式化(我不知道其语法),或者是 Date() 对象。我第一次尝试这个

2016-08-01 11:00 
Run Code Online (Sandbox Code Playgroud)

图书馆抱怨的时刻(我到办公室后会发布完整的错误消息)。

解决方案

添加T。

startTime = moment.tz('2016-08-01T11:00', 'US/Eastern');
Run Code Online (Sandbox Code Playgroud)

我讨厌 timedate 库以及我们如何跟踪时间。