0
0

【JavaScript】 ISO 8601形式 から年月日時分秒を取得する

Posted at

1999-12-31T15:00:00.000Z という日付文字列の Z は、ISO 8601 形式で表された日時における「Zulu Time」の略で、協定世界時 (UTC: Coordinated Universal Time) を示している.
これを日本時間で取得してみよう.

test.js
const date = new Date('1999-12-31T15:00:00.000Z');

// タイムゾーンを確認
const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
console.log('タイムゾーン: ', timeZone);

// JST に変換してから年・月・日を取得
const localYear = date.getFullYear(); // JST 基準の年を取得
const localMonth = date.getMonth() + 1; // JST 基準の月を取得 (0-based なので+1)
const localDay = date.getDate(); // JST 基準の日を取得

// JST に変換してから時・分・秒を取得
const localHours = date.getHours(); // JST 基準の時間を取得
const localMinutes = date.getMinutes(); // JST 基準の分を取得
const localSeconds = date.getSeconds(); // JST 基準の秒を取得

console.log('年: ', localYear);
console.log('月: ', localMonth);
console.log('日: ', localDay);
console.log('時: ', localHours);
console.log('分: ', localMinutes);
console.log('秒: ', localSeconds);

実行する.

$ node test.js
タイムゾーン:  Asia/Tokyo
年:  2000
月:  1
日:  1
時:  0
分:  0
秒:  0

タイムゾーンはユーザーのブラウザが設定されているタイムゾーンが表示されるため, 既に日本時間となっていることがわかる. すなわち特別な変換は必要ないのである.

ついでに UTC のまま取得する方法も記載しておこう.

test.js
const date = new Date('1999-12-31T15:00:00.000Z');

const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
console.log('タイムゾーン: ', timeZone);

// UTC基準で年・月・日を取得
const utcYear = date.getUTCFullYear(); // UTC基準の年を取得
const utcMonth = date.getUTCMonth() + 1; // UTC基準の月を取得 (0-basedなので+1)
const utcDay = date.getUTCDate(); // UTC基準の日を取得

// UTC基準で時・分・秒を取得
const utcHours = date.getUTCHours(); // UTC基準の時間を取得
const utcMinutes = date.getUTCMinutes(); // UTC基準の分を取得
const utcSeconds = date.getUTCSeconds(); // UTC基準の秒を取得

console.log('年: ', utcYear);
console.log('月: ', utcMonth);
console.log('日: ', utcDay);
console.log('時: ', utcHours);
console.log('分: ', utcMinutes);
console.log('秒: ', utcSeconds);

実行する.

$ node test.js
タイムゾーン:  Asia/Tokyo
年:  1999
月:  12
日:  31
時:  15
分:  0
秒:  0

タイムゾーンは日本時間のまま UTC で取得できていることが確認できた.

参考

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0