まず、おそらくタイムゾーンが関係していると思います。私はEST / EDTにいます。また、これを chromium 17 / Linux でテストしています。
ここで、次のような 2 つの日付を作成するとします。
// December 5
dateFromNumbers = new Date(2020, 11, 5);
dateFromString = new Date("2020-12-5");
これらの日付のタイムスタンプは同一である必要があるようですが、次のようになります。
+dateFromNumbers == +dateFromString; // true
...少なくともこの場合。ただし、場合によっては、そうではありません。
// December 15
dateFromNumbers = new Date(2020, 11, 15);
dateFromString = new Date("2020-12-15");
+dateFromNumbers == +dateFromString; // false
何が起きてる?
dateFromNumbers; // Tue Dec 15 2020 00:00:00 GMT-0500 (EST)
dateFromString; // Mon Dec 14 2020 19:00:00 GMT-0500 (EST)
dateFromString
この場合よりも 5 時間早いようですdateFromNumbers
(EST は GMT - 5 です。何らかの形で関連していると確信しています)。
10 月から 12 月の月末に影響するようです。これは、どの日が異なるかを簡単に確認できるようにするためのフィドルです (赤緑の色盲でない限り、その場合は見にくい場合があります。申し訳ありません)。
何を与える?
ノート:
- システムのタイムゾーンを EST/EDT に設定して、私が見ているように jsfiddle の例を確認できます。
- Date の月の数字は 0 から始まります。これ
11
はタイプミスではありません。 - この問題は、私がチェックした毎年表示されます。