両方の日付文字列をに渡そうとしていnew Date(t)
ます。
結局のところ、両方の文字列が同じ時間を表していると思いますが、結局、時間を省略した場合、その日の真夜中ではないでしょうか。
しかし、
new Date("2016-02-16 00:00")
2016-02-16、午前0時、予想どおり現地時間を返します
new Date("2016-02-16")
2016-02-16のUTCの真夜中を返しますが、これは誤りです。少なくとも、他の文字列が何を解析するかを想定して、私が期待したものとは異なります。
時刻を現地時間として返すのか、UTCとして返すのかに関わらず、両方が同じ振る舞いをするのであれば理解できますが、このように異なるものを返す理由は非常に一貫していないようです。
回避策として、対応するタイムスタンプのない日付に遭遇したときは常に、一貫した動作を得るために「00:00」を追加できますが、これはかなり壊れやすいようです。
「datetime-local」タイプのINPUT要素からこの値を取得しているので、ページ要素から返された値を回避する必要があることは特に矛盾しています。
私は何か間違ったことをしていますか、それとも別のことをしているのですか?
2016-02-16 00:00
-これは有効な時間のようには見えません。ecma-international.org/ecma-262/6.0/…、ただしT
そこに置いた後でも実際には異なる動作をする