Minstrel

Ruby, JavaScript, Haskell, Math, Music, Design

JavaScriptのDateをそのまま比較するとfalseがでるよ

ある日の出来事

new Date('2018/09/01 10:00') == new Date('2018/09/01 10:00')
false

ファッッッッッッッッッッ?!!!!!


こうすると取れる模様

new Date('2018/09/01 10:00').getTime() == new Date('2018/09/01 10:00').getTime()
true

ちなみにgetTime()は1970 年1月1 日00:00:00からの経過ミリ秒を取得している模様。

Microsoftが解説してくれていた

JavaScript の日付を比較するときに、演算子の両側の日付が同じオブジェクトを参照している場合にだけ == 演算子が true を返すことを念頭に置く必要があります。 したがって、2 つの別々の Date オブジェクトが同じ日付に設定されている場合、date1 == date2 は false を返します。 また、時刻なしで日付だけで設定された Date オブジェクトは、その日付の午前 0 時に初期化されます。 したがって、たとえば時間を指定せずに設定された 1 つの Date を Date.now と比較する場合、最初の Date は午前 0 時に設定され、Date.now は設定されないことに注意してください。

結論

一言でいうと、J「avaScriptのDateの仕様ですよ」

二言でいうと、JavaScriptの仕様でDateに対して、等価演算子(==) or 厳密等価演算子(===)を使うと、「同じオブジェクトであるかどうか」をチェックしてしまう。(誰得なのだろうか?)