1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ISO 8601とJavaScriptのDate

Last updated at Posted at 2022-02-26

備忘録的にメモ

ISO 8601

時刻を表すフォーマットはたくさんありますが、よく使用されるISO 8601。
ISO 8601では以下のように時刻を表します。

拡張表記 基本表記 タイムゾーン 表す時間
2022-02-27T15:08:10+09:00 20220227T150810+0900 JST(日本時間) 日本時間2022年2月27日15時8分10秒
2022-02-27T06:08:10Z 20220227T060810Z UTC(協定世界時) 2022年2月27日6時8分10秒

拡張表記が結構APIとかで使われる気がする。

("+09:00"はローカル時であることを表すだけなので、そこから9時間引いて計算し直す必要は無い...!)

Dateでの扱い方

すべてUTCに変換すると、タイムゾーンを気にする必要は特にない。
getTime()をメソッドを用いると協定世界時の1970年1月1日00:00:00からの経過ミリ秒が得られる。
なので一度getTime()を通せば経過時間などを簡単に計算できる。

> const date = new Date(); //現在の時刻を表すDateオブジェクト
> date.getTime();
1645880642927
> new Date(date.getTime());
2022-02-26T13:04:02.927Z
> const date = new Date('2022-02-26T22:04:00+09:00'); //タイムゾーンを用いたDateオブジェクト
> date.getTime();
1645880640000
> new Date(date.getTime());
2022-02-26T13:04:00.000Z

なので、経過時間を計算するには以下の文だけでOK(時差考慮必要なし)

const start = new Date('2022-02-26T22:04:00+09:00');
const now = new Date();
// 経過時間をミリ秒で取得
const elapse = now.getTime() - start.getTime();

Date.now()new Date()を使う際、これはちゃんとタイムゾーンを考慮しなきゃいけないんだっけ...?と思うけど結局UTC基準に変換しているので、特に考慮する必要は無い...!)

参照

間違いがあったらご指摘ください。

1
0
3

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?