[JS] 現在日時をISO8601・Unixtimeにする

JavaScript の Date では、ISO8601・Unixtime の形式に変更することができます。動作している環境のタイムゾーンの取得もできます。 タイムゾーンを反映した値とするには、個別の対応が必要になります。

const now = new Date();
// ISO8601
console.log(now.toISOString());
// Unixtime
console.log(Math.floor(now.getTime() / 1000));
// Timezone
console.log(now.getTimezoneOffset());

現在日時を取得する

現在日時は、new Date() で取得できます。その値を利用して、他の形式に変換などして

const now = new Date();

現在日時をISO8601形式にする

toISOString() でISO8601の形式にすることができます。ミリ秒ではなく秒とするには、ミリ秒部分をカットすることで秒にすることもできます。

const now = new Date();
// ISO8601
console.log(now.toISOString());
// 2023-05-05T05:30:54.976Z
console.log(now.toISOString().substring(0,19)+"Z");
// 2023-05-05T05:30:54Z

現在日時をUnixtime形式にする

getTime() にて unixtime を取得できます。ミリ秒となっているため1000で割って切り捨て(floor)することで秒にしています。ブラウザによってミリ秒についてもカットされている場合があるので、ミリ秒を利用する場合はブラウザの動作を考慮する必要があります。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime

const now = new Date();
// Unixtime
console.log(Math.floor(now.getTime() / 1000));
// 1683264654

タイムゾーンを確認する

ISO8601 および unixtime ではタイムゾーンが考慮されていない UTC の値となっています。タイムゾーンを把握するには、getTimezoneOffset() を利用します。UTC – 現地時間となるため、実際に記載するものと正負が逆になっています。日本時間の場合は、+9時間ですが、-540分(-9時間)となります。

const now = new Date();
// Timezone
console.log(now.getTimezoneOffset());
// -540

JavaScript

Posted by kidatti