Moment TimezoneはIANAのtz databaseを使ってMoment.jsにタイムゾーン操作のAPIを追加してくれます。前回確認したMoment.jsでも+09:00
するとJSTになりますが自分で計算するのが面倒です。Asia/Tokyo
のようにタイムゾーンを指定して変換できると便利です。
テスト用のDockerコンテナ
Dockerイメージをビルドするプロジェクトを作成します。
$ mkdir -p ~/node_apps/moment-tz-spike
$ cd !$
package.jsonにmoment-timezone
パッケージを指定します。
~/node_apps/moment-tz-spike/package.json
{
"name": "moment-tz-spike",
"version": "0.0.1",
"private": true,
"dependencies": {
"moment-timezone": "0.3.1"
},
"scripts": {"start": "node"}
}
Dockerイメージをビルドしてコンテナを起動します。
$ docker build -t moment-tz-spike .
$ docker run --rm -it moment-tz-spike
> moment-tz-spike@0.0.1 start /app
> node
>
使い方
タイムゾーンをAsia/Tokyo
に指定して現在時刻をISO 8601表示の日付にフォーマットします。
> var moment = require('moment-timezone');
> moment().tz("Asia/Tokyo").format();
'2015-04-08T10:29:25+09:00'
UTCからJSTに変換します。
> moment('2015-04-08T02:36:45.408Z').tz("Asia/Tokyo").format()
'2015-04-08T11:36:45+09:00'
指定したISO 8601表示の日付をUNIXタイムスタンプに変換します。
> moment('2015-04-08T02:36:45.408Z').tz('Asia/Tokyo').unix()
1428460605
UNIXタイムスタンプからISO 8601表示の日付にフォーマットします。
> moment(1428460605,'X').tz("Asia/Tokyo").format()
'2015-04-08T11:36:45+09:00'