我正在尝试解析日期字符串,并将相应的unix时间返回到UTC区域中日期开始的午夜。但是,我的node.js会在MY时区中的该日期开始时返回unixtime。
我做错了什么?这应该打印1440633600到控制台,但它打印的数字对应于我的时区中的unix时间,而不是UTC。
var moment = require('moment');
var datestring = "August 27 2015";
var unixDate = new Date(datestring);
var myDate = moment.utc(unixDate);
console.log(myDate.format('X'));
“datestring”在结尾处并不总是包含“Z”(表示UTC),但有时可能会这样,所以我不能在解析之前添加“Z”。这里有一些我不想要的东西......
答案 0 :(得分:1)
TL; DR:
var myDate = moment.utc(datestring, 'MMMM DD YYYY');
解释:
将var unixDate = new Date(datestring);
设置为datestring
的 "August 27 2015"
会将unixDate
设置为与您所在时区2015年8月27日午夜相对应的时间戳。
随后,var myDate = moment.utc(unixDate)
将myDate
设置为同一时间设置的moment
对象。由于您要向其发送时间戳而不是日期,因此没有理由调整时区。由于您根据时区中的时间生成了时间戳,因此moment
看到了这一点。
一种解决方法是将该行更改为var myDate = moment.utc(datestring, 'MMMM DD YYYY');
。由于moment
将获取要处理的字符串而不是UNIX时间戳,因此将在2015年8月27日的UTC中选择午夜。