概要
Day.jsではparseやformatの際に、日付のタイムゾーンを設定することができます。
今回はUTCのタイムゾーンで受け取った日付の文字列を、日本時間に変換しつつformatする、といった場合にどうするかというののメモ書きです。
対応方針
まず、parse時にドキュメントのParsing in Zoneにある通り、dayjs.tz
の関数を呼び出してUTCのタイムゾーン指定でparseします。
parse後のオブジェクトをドキュメントのTime Zoneにある通り、もう一度dayjs.tz
関数を呼び出して、日本時間に変換します。
実装サンプル
function getDayJsObj() {
const dayjs = require("dayjs");
const utc = require("dayjs/plugin/utc");
const timezone = require("dayjs/plugin/timezone");
dayjs.extend(utc);
dayjs.extend(timezone);
return dayjs;
}
export function getDisplayDateMinuteUnit(dateStr) {
const dayjs = getDayJsObj();
// UTCとして日付文字列を読み込み
const dayjsTz = dayjs.tz(dateStr, "YYYY-MM-DD HH:mm:ss", "UTC");
// 日本時間で分まで出力
return dayjsTz.tz("Asia/Tokyo").format("YYYY-MM-DD HH:mm");
}
その他参考
Day.jsの.tz.setDefault()が動かないと思ったけど使い方が間違ってただけだった
Day.jsのフォーマット指定一覧(ドキュメント)