この問題は、ここで紹介したmoment()。toISOString()が原因のようです。
http://momentjs.com/docs/#/displaying/as -iso-string /
moment()。toISOString();
私がそうするなら、私はそうするかもしれませんが、コンソールで:
n = moment.utc(new Date('2013-07-18T00:00:00+01:00'))
それは戻ります:
Thu Jul 18 2013 00:00:00 GMT+0100 (GMT Daylight Time)
ここでtoISOString( )を呼び出すと、日付が突然17日になります。
n.toISOString()
上記は18日ではなく17日を返します:
"2013-07-17T23:00:00.000Z"
ご覧のとおり、 toISOString
常にUTCで時刻を表示します(特定の方法で表示することに加えて)。
@ichernev 、私はあなたの主張を完全に
それはあなたのために働くかもしれません:
> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSSZZ')
'2013-07-23T14:54:20.176-0700'
または
> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSS')
'2013-07-23T14:54:20.176'
タイムゾーンを気にせず、単に時間を表示したい場合。
@ichernev 、どうもありがとう。
toISOStringのkeepOffsetパラメーターを使用できます。
toISOString(keepOffset?:ブール値):文字列;
=>
moment()。toISOString(true)
これは本当に正しいですか?
moment('1970-01-01').toISOString()
出力:
1969-12-31T23:00:00.000Z
ほとんどの人は、特定の日付を瞬間的に渡し、それをtoISOStringとしてフォーマットすると、日付が変更されないことを期待すると思います。 関数がより予測可能な方法で動作するようにする場合、keepOffsetをデフォルトでtrueにしないのはなぜですか?
私が知っている瞬間が一貫されているネイティブとES2015に従ってJavaScriptのDate toISOString機能それでもこれだけの予期された動作のように感じることはありません。
最も参考になるコメント
それはあなたのために働くかもしれません:
または
タイムゾーンを気にせず、単に時間を表示したい場合。