まずはどんな時間を扱うことが多いのか。
年月日の形式ではなくて、時差について二つだけ。
協定世界時(UTC)
Mon, 20 May 2019 09:33:22 GMT
グリニッジ標準時(GMT)
Mon, 20 May 2019 09:33:22 GMT
上記二つはJSでもほぼ同義語のようです。
Japan Standard Time (JST)
2019/5/20 18:33:22
JSTとは日本の時間のこと。上記のGMTより+9時間の時差らしいです。
RFC 2822 形式
Mon, 20 May 2019 18:36:54 +0900
こんな書き方はこういう形式というらしいです。
ユニックスタイム(unixtime)
1558400303080
1970年1月1日0時0分0秒からとにかく、数えた数。
ISO 8601 国際規格
基本形式:2019-05-13T23:24:41Z
基本形式(時差あり):20190518T182831+0900
拡張形式:2019-05-18T18:28:31+09:00
ウェブのやりとりでよく見かける形式。
ではJSの年月日を取得する記述を実装します。
これを出力するためには以下のように書くことができます。
dateobj = new Date(); //日付オブジェクトを作る //Dateオブジェクトで可能になるメソッド var yyyy = dateobj.getFullYear(); //年を取得 var mo = dateobj.getMonth() + 1; //月は0から返ってくるので1を足す var dd = dateobj.getDate(); //日を取得 var week_num = dateobj.getDay(); //曜日の番号がとれる 0から6 var week_arr = ["日", "月", "火", "水", "木", "金", "土"]; var w = week_arr[week_num]; //配列を利用して数字を曜日に変換する var hh = dateobj.getHours(); //時間を取得 var mm = dateobj.getMinutes(); //分を取得 var ss = dateobj.getSeconds(); //秒を取得 var ms = dateobj.getMilliseconds(); //ミリ秒を取得 //出力 document.write(yyyy + "年" + mo + "月" + dd + "日" + w + "曜日" + hh + "時" + mm + "分" + ss + "秒" + ms + "ミリ秒");
Date()で日付のオブジェクトを作ると、今のGMTを取れます。
以下の記述をJSに書くとに取り出した日付を変換することができます。
<script> today = new Date(); //日付オブジェクトを作る document.write(today); //そのまま表示すると現在の日本標準時が出る document.write("<br>"); var a = today.toLocaleString(); //日本なんので日本におなじみの形式になる document.write(a); document.write("<br>"); var b = today.toGMTString(); //GMTに変換 つまり日本の9時間前 document.write(b); document.write("<br>"); var c = today.toUTCString(); //UTCに変換だけどGMTとほぼ同じらしい document.write(c); </script>
実行するとこうなります。
今の日時でなくても、Dateオブジェクトで加工することができます。
<script> // 好きな年月日をカンマ区切りで代入ができる (2019年1月5日3時10分30秒) var dateobj = new Date( 2019, 0, 5, 3, 10, 30 ) ; //月は0からスタート document.write(dateobj); document.write("<br>"); // RFC 2822 形式のまま代入もできる my_gmt = 'Mon, 20 May 2019 09:21:05 GMT'; dateobj = new Date(my_gmt); document.write(dateobj); document.write("<br>"); document.write("<hr>"); // ISO 8601 形式も代入できる e = '2019-05-13T23:24:41Z'; f = new Date(e); document.write(f); //RFC 2822 形式で表示 時差を表示してくれる document.write("<br>"); document.write(f.toLocaleString()); //日本の時間を表示 </script>
このようにすることでいろんな形式の日時データを解釈、加工することができます。
次はユニックスタイムについて。
<script> // unixtime dateobj = new Date(); var ut = dateobj.getTime() ; document.write(ut); document.write("<br>"); dateobj = new Date(ut); //unixtimeも代入可能 document.write(dateobj.toLocaleString()); document.write("<br>"); document.write("<hr>"); </script>
ただの数列ですが、しっかり日時情報を持っています。