ガレコレ
Garage Collection
 
2017年8月30日(水)
日付関数は、分かっていても、ややこしい。 #HTML5&CSS3&JavaScript

 時刻を表すのには、地方時(Local Time)と協定世界時(UTC)があります。

 地方時の1つである日本標準時(JST)は、UTC+9と記述され、イギリス・グリニッジ天文台がある時間帯から+9時間ズレています。

 コンピュータでは、時刻はUNIX時間で取り扱われます。協定世界時 (UTC) での1970年1月1日0時0分0秒の時刻からの形式的な経過秒数(閏秒を加味しない)で表されます。

 UTC 1970年1月1日0時0分0秒
=0 UNIX秒
=JST 1970年1月1日9時0分0秒

 JST 1970年1月1日0時0分0秒
=-32400 UNIX秒


 さて、ここからJavaScriptの話に移ります。まずは、new Date()で新しい日付オブジェクトを作成しましょう。()内の引数を省略すると、現在の時刻として扱われます。

-- プログラミング --
<script>

$date = new Date();
alert($date);

</script>
--

-- アラート例 --
Wed Aug 30 2017 12:34:56 GMT+0900 (東京 (標準時))
--

 JavaScriptを実行しているコンピュータに設定されている地方時で取り扱われています。

 new Date(年,月-1,日,時,分,秒,ミリ秒)と、日本標準時で記述してみましょう。

-- プログラミング --
<script>

$date = new Date(1970,0,1,0,0,0,0);
alert($date.getTime());
alert($date.getTimezoneOffset());

</script>
--

-- アラート --
-32400000
-540
--

 日本標準時で1970年1月1日0時は、-32400 UNIX秒。ちゃんとタイムゾーンが、-540分/60分=-9時間(符号に注意)が設定されています。

 ここまでをまとめると、new Date()は日本標準時で設定し、getTime()の数値はUTC UNIXミリ秒ということです。

 ところが、new Date(UTC UNIXミリ秒)という記述方法があります。自分は、これだけ特別として覚えています。


P.S. そもそも、UNIX時間と言ったら、協定世界時UTCなのです。
 
お問い合わせ
by Network Communication Note