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包设置日期和时间,并将其视为给定的时区?
所以问题是
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 库以及我们如何跟踪时间。