私はこの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 は、書式設定された g の代わりに元の v ISO を使用して前の時間を計算します。
なんで?
編集: 別の時間プラグイン (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)
*/