解析 node.js 中的日期:moment.utc() 未返回正确的 UTC unix 时间
Parsing dates in node.js: moment.utc() is not returning the correct UTC unix time
我正在尝试解析一个日期字符串和 return 相应的 unix 时间到 UTC 区域日期开始时的午夜。但是,我的 node.js 在我的时区中那个日期的开始保持 returning 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",所以我不能在解析之前只添加一个 "Z"。这里一定有我遗漏的东西...
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 时间戳,因此它将 select 2015 年 8 月 27 日午夜(UTC)。
我正在尝试解析一个日期字符串和 return 相应的 unix 时间到 UTC 区域日期开始时的午夜。但是,我的 node.js 在我的时区中那个日期的开始保持 returning 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",所以我不能在解析之前只添加一个 "Z"。这里一定有我遗漏的东西...
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 时间戳,因此它将 select 2015 年 8 月 27 日午夜(UTC)。