Unix時刻:日付を信じる前に単位を確かめる
ログやAPIの数値が不自然な日付になることがあります。謎のタイムゾーンではなく、秒をミリ秒として読んだり、その逆だったりするのがよくある原因です。
数値には単位の明示が必要
基点は1970-01-01T00:00:00Zです。秒を使うシステムもありますが、JavaScriptのDateはミリ秒を使い、うるう秒を無視します。
秒を1000倍するとミリ秒です。特に基点の近くや負数では桁数だけを頼らず、データの仕様を確認します。
ゾーンが変えるのは表示で、瞬間ではない
同じ瞬間を複数の現地時刻で示しても、元のタイムスタンプは同じです。手で時差を足してからそのゾーンで表示すると、二重に適用するおそれがあります。
この変換器はUTCを明示的に使い、日付入力にZを求めます。言語や国からゾーンは推測しません。現地表示にはタイムゾーン変換を使います。
精度と範囲も意味の一部
秒の小数部分はミリ秒を表せます。1.25秒は1250秒ではありません。1秒未満で記録を並べたい場合は小数を残します。
秒は小数3桁まで、ミリ秒は整数を受け付けます。存在しない日を黙って修正せず検証します。うるう秒の間隔測定や専門的な時刻仕様の代用品ではありません。
例:同じ瞬間を表す2つの数値
86400秒と86400000ミリ秒は、どちらも1970-01-02T00:00:00.000Zです。86400をミリ秒と読むと1970-01-01T00:01:26.400Zになり、言語や暦の問題ではありません。
−0.25秒は1969-12-31T23:59:59.750Zです。負号は基点より前を表し、小数部分も残ります。負の値だから無効な日付とは限りません。