6
3

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 3 years have passed since last update.

JavaScript ライブラリを使わず ISO形式で日本時間を取得する

Last updated at Posted at 2020-04-22

ISO形式で日本時間

JSビルトインの Date オブジェクトのみで、ISO8601形式(例:2004-04-01T00:00:01+09:00)を日本時間で取得する。意外と簡単ではなかったので、記載しておく。

ライブラリ使えるなら使った方が良いです。moment.jsとか。

moment.jsならこんなに簡単(ES6)

moment.js
import moment from 'moment'

const now = moment().format()    // 2020-04-22T22:14:25+09:00

const now2 = moment().format('YYYY-MM-DDTHH:mm')    // 2020-04-22T22:14:25

ライブラリを使わず、Dateオブジェクトで同様のことを行う

ただいま、日本時間で 2020/4/22 22:39:03 だとします。"2020-04-22T22:39:03+09:00" を取得します。

date.js
// ローカル現在時刻の取得
const nowLocal = new Date()    // Wed Apr 22 2020 22:39:03 GMT+0900 (Japan Standard Time)

// UTCとローカルタイムゾーンとの差を取得し、分からミリ秒に変換
const diff = nowLocal.getTimezoneOffset() * 60 * 1000    // -540 * 60 * 1000 = -32400000

// toISOString()で、UTC時間になってしまう(-9時間)ので、日本時間に9時間足しておく
const plusLocal = new Date(nowLocal - diff)    // Thu Apr 23 2020 07:39:03 GMT+0900 (Japan Standard Time)

// ISO形式に変換(UTCタイムゾーンで日本時間、というよくない状態)
let iso = plusLocal.toISOString()   // "2020-04-22T22:39:03.397Z"

// UTCタイムゾーン部分は消して、日本のタイムゾーンの表記を足す
iso = iso.slice(0, 19) + '+09:00'    // "2020-04-22T22:39:03+09:00"

もっと簡単な方法があったら教えてください。

参考

6
3
1

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
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?