JavaScript
Node.js

【殴り書き】javascriptにおけるうるう秒の調査

More than 3 years have passed since last update.


実行環境1: chromeの開発者ツール?F12押したら出てくるやつ


まずは、1秒手前の正常?な時間をUnixTimeStampで表示してみる。

new Date('2015/07/01 08:59:59') / 1000

結果

1435708799


次に、2015-07-01 08:59:60をDateTime型にパースしてみる。

new Date('2015/07/01 08:59:60');

new Date('2015/07/01 08:59:60') / 1000;

結果

Invalid Date

NaN


次に、2015-07-01 08:59:60のUnixTimeStampをDateTime型に入れるとどう表記されるか見てみる。

new Date(1435708800 * 1000);

結果

Wed Jul 01 2015 09:00:00 GMT+0900 (東京 (標準時))


ちょっと気になって前回のデータ入れてみる。

new Date('2012/07/01 08:59:60')

結果

Invalid Date


実行環境2: node.js v0.10.25 On ubuntu 14.04


まずは、1秒手前の正常?な時間をUnixTimeStampで表示してみる。

new Date('2015/07/01 08:59:59') / 1000

結果

1435708799


次に、2015-07-01 08:59:60をDateTime型にパースしてみる。

new Date('2015/07/01 08:59:60');

new Date('2015/07/01 08:59:60') / 1000;

結果

Invalid Date

NaN


次に、2015-07-01 08:59:60のUnixTimeStampをDateTime型に入れるとどう表記されるか見てみる。

new Date(1435708800 * 1000);

結果

Wed Jul 01 2015 09:00:00 GMT+0900 (JST)


ちょっと気になって前回のデータ入れてみる。

new Date('2012/07/01 08:59:60')

結果

Invalid Date


まぁそりゃそうか・・・っていう感じの結果。

ブラウザは一種類しか試してないけど、node.jsでも同じ動作。

timestampで扱っている場合は大丈夫。

59分60秒のtimestampを9時としてしまうが、1秒ぐらいの差はそんなに問題ではないような。

当日は9時丁度に終わるイベントとかがなければ問題になることはなさそう。

ただ、文字列で『2015-07-01 08:59:60』をパースするとエラーでるので、node.jsは気をつけたほうがいいかな。すぐ落ちるし。