我有这个 ISO 日期:
var v = '2013-07-09T13:27:29.000Z';
如果我这样做:
var g = moment(v).format();
控制台给我 g 值作为正确的本地时间2013-07-08T17:25:08-03:00
但是,如果我这样做是为了获得时间:
console.log(moment(g).startOf('day').fromNow());
Moments 使用原始 v ISO 而不是格式化的 g 计算时间前。
为什么?
编辑:我已经测试了另一个时间插件(jquery.timeago),并且在传递原始 v 值时会发生同样的错误解析到本地时间。
我在这里做错了什么?此代码正在客户端执行,因此所有插件都应该为用户返回正确的本地时间。
编辑2:关于我正在尝试做的更多相关信息:
var v = notifs.ntime; //2013-07-09T13:27:29.000Z
var m = moment(v).zone(v).format(); // 2013-07-09T13:27:29+00:00 (wrong local)
var m2 = moment(v).format(); // 2013-07-09 10:27:29 (correct local)
var r = moment(v).zone(v).startOf('day').fromNow() // 21 hours ago (wrong)
var r2 = moment(v).startOf('day').fromNow() // 18 hours ago (wrong)
console.log(v);
console.log(m);
console.log(m2);
console.log(r);
console.log(r2);
console.log('-------------------');
/*
2013-07-09T13:27:29.000Z
2013-07-09T13:27:29+00:00
2013-07-09T10:27:29-03:00
21 hours ago
18 hours ago
-------------------
I expected "8 hours ago" as now is 18:10 and (v) was set on 10:27 (m2)
*/