generated at
JavaScriptのDateの罠


解決策の例


参考




他の言語のDateを知らないのでJSがどのぐらいおかしいのかあんまりわかってないmrsekut


Date.parseが返すのは Date でなく整数
タイムゾーンを含めないとずれる
getYearではなくDate.prototype.getFullYearを使う
これはまあ、という気がする
他の言語ではどうなんだろう
文字列に変換するmethodが多すぎる
toString
toDateString
toTimeString
toLocaleString
toLocaleTimeString
toJSON
JSON.stringify
内部でtoJSON
結局1つも使えるやつがないmrsekut





ゼロベースの月: JavaScriptのDateオブジェクトでは、月は0から11の範囲で表現されます。つまり、1月は0、12月は11となります。これは直感的でなく、混乱を招く原因となります。

うるう秒の無視: JavaScriptのDateオブジェクトはうるう秒を無視します。これは特定のタイムセンシティブなアプリケーションでは問題となる可能性があります。

解析の曖昧さ: new Date(string)の形式で日付を解析すると、ブラウザや実行環境によって結果が異なる可能性があります。これは、入力形式がISO 8601形式でない場合に特に問題となります。

日付の範囲: JavaScriptのDateオブジェクトは、1970年から2038年までの範囲しか正確に扱えません。これは、JavaScriptが内部的にUnixタイムスタンプを使用しているためです。

ミリ秒の扱い: JavaScriptのDateオブジェクトはミリ秒までの精度しか持ちません。これは、より精度の高い時間計測が必要な場合には不足する可能性があります。

変更可能なオブジェクト: Dateオブジェクトはミュータブル(変更可能)です。これは、意図しない変更が生じる可能性があります。




結論: NaNが返るから。
これも割とダルい罠だな