LoginSignup
16
14

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-05-26

実行環境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は気をつけたほうがいいかな。すぐ落ちるし。

16
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
14