JS(jQuery)でYYYYMMDD HH:MM:SS形式をUNIX時間に変換
JavaScriptで日時を比較する必要があり、正しく比較をするためにUNIX時間の利用を考えました。
さらにその日時はJSONで管理されており、YYYYMMDD HH:MM:SS形式で記述されていたので、JSONから読み込んでUNIX時間に変換する一連を備忘録として残します。
JSON
サンプルのJSONは以下の通り。
[
{
"specificDate": "19991225 00:00:00"
},
{
"specificDate": "20100101 11:59:59"
},
{
"specificDate": "20210815 21:30:00"
}
]
JavaScript
JSONの読み込みにはjQueryを用いています。
$(function () {
$.getJSON("date.json", function (date) {
for (let i in date) { // date.jsonの配列を繰り返す
const specificDate = date[i].specificDate.replace(/\s|\:+/g, ""); // 半角スペースと半角コロンを除去
const YYYY = parseInt(specificDate.substring(0, 4));
const MM = (parseInt(specificDate.substring(4, 6)) - 1); // 月は-1をする(Jan = 0, Dec = 11)
const DD = parseInt(specificDate.substring(6, 8));
const Hour = parseInt(specificDate.substring(8, 10));
const Min = parseInt(specificDate.substring(10, 12));
const Sec = parseInt(specificDate.substring(12, 14));
const unixTime = new Date(YYYY, MM, DD, Hour, Min, Sec); // UNIX時間に変換
// コンソールで確認
console.log(unixTime);
}
})
});
HTML
動作確認ができるHTMLは以下の通り。
jQueryはGoogleのCDN経由で読み込んでいます。
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript" src="script.js"></script>
</body>
</html>
まとめ
ポイントは、月の解釈は Jan = 0, Dec = 11 になるので、忘れずに -1 をする必要があります。
そして、型を整数で扱うことです。
ケースとしてはあまりないかもしれませんが、いざという時にサンプルがあれば便利です。
どなたかの参考にもなれば幸いです。