1. はじめに
知っておかないと怖いなぁと思ったことを記事にしました。
2. Javascript の new Date()
テーブルやローカルストレージに日付のデータを格納するとき、文字列で2000/05/25
や2000-05-25
で格納したりするときがありますよね。
このデータをDate型で扱いたいとき
dateString = db.getDate();
date = new Date(dataString);
ってしてませんか?コレ実は怖いんです。
3. 実行結果
まずは2000/05/25
を確認しましょう。
date = new Date(`2000/05/25`);
console.log('date=' + date.toLocalString());
きっと
date=2000/5/25 0:00:00
と出力されるでしょう。想定どおりですよね?
次に、2000-05-25
を確認しましょう。
date = new Date(`2000-05-25`);
console.log('date=' + date.toLocalString());
以下のように出力されます。
date=2000/5/25 9:00:00
朝9時です。想定どおりでしょうか?
4. こんなバグに
2000-05-25
の表示形式の文字列をnew Date()で変換した場合、朝9時になるって知っていました?
知っておかないと
- カレンダーに朝9時の日付をセットしてしまう
- 現在日時と朝9時の日時を比較してしまう
など、バグを埋め込んでしまいますよ。
怖いと思った方は気をつけましょう。