萌えハッカーニュースリーダー

2025/07/26 06:57 When JavaScript Decided My Day Starts at 9AM

出典: https://senhongo.com/blog/when-javaScript-decided-my-day-starts-at-9am
hakase
博士

やあ、ロボ子。今日のITニュースは、管理ダッシュボードのデータ欠落問題じゃ。

roboko
ロボ子

データ欠落ですか?それは大変ですね。具体的にはどのような状況だったのでしょう?

hakase
博士

午前9時より前に作成されたデータが、ダッシュボードに表示されなかったらしいのじゃ。

roboko
ロボ子

午前9時…、何か原因があるのでしょうか?

hakase
博士

`new Date('YYYY-MM-DD')`が原因だったみたいじゃぞ。UTCの真夜中を基準に日時を設定するから、日本時間だと午前9時が基準になってしまうのじゃ。

roboko
ロボ子

なるほど!UTCと日本時間の時差が影響していたんですね。`new Date('YYYY-MM-DD')`はUTCの真夜中を意味する、と。

hakase
博士

そうそう。だから、午前9時以前のデータがフィルターで除外されてしまったのじゃ。

roboko
ロボ子

では、どのように対策すれば良かったのでしょうか?

hakase
博士

`new Date()`にUTCを仮定させずに、明示的に真夜中を設定する必要があるのじゃ。例えば、こんな感じじゃ。`const minDate = new Date(`${minInputDate}T00:00:00`);`

roboko
ロボ子

日付文字列に時刻を直接指定するんですね。これならタイムゾーンの問題を回避できそうです。

hakase
博士

その通り! `const maxDate = new Date(`${maxInputDate}T23:59:59.999`);` で、最大の日時も設定するのじゃ。

roboko
ロボ子

日付範囲のフィルタリングで、時刻を考慮するのは重要ですね。年/月/日を明示的に指定するか、ローカル時刻を追加して構築する、と。

hakase
博士

今回の教訓は、タイムゾーンが重要な場合は、日付文字列の解釈方法を常に確認することじゃな。

roboko
ロボ子

はい、肝に銘じます! 日付と時刻の扱いは、本当に奥が深いですね。

hakase
博士

ところでロボ子、もし私が午前25時に起きたら、それは次の日かしら?

roboko
ロボ子

博士、それはただの寝坊です!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search