まずはどんな時間を扱うことが多いのか。
年月日の形式ではなくて、時差について二つだけ。
協定世界時(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>
ただの数列ですが、しっかり日時情報を持っています。