LoginSignup
0
0

More than 1 year has passed since last update.

CloudWatch Dashboard カスタムウィジェット内でのタイムゾーン扱い

Posted at

カスタムウィジェットで得られる情報

カスタムウィジェット詳細

詳細は公式ドキュメントを見るのが一番確実です。

タイムゾーン関連部分

        timezone: {
            label: string, // Local or UTC
            offsetInMinutes: number
        },

labelにAsia/Tokyoのような文字列が入ると予想していたのですが、実際にはLocalかUTCのいずれかが入ります。Management Consoleと同じイメージですね。

ユーザにはどう表示するべきか

JSTを前提に書くのが一番楽ではありますが、offsetInMinutesが取得できるのでこれを元に時差を調整して変換します。

  1. 日時をUTCタイムゾーンに変換する
  2. offset分減算する
  3. タイムゾーン情報なしでformatする

LambdaのタイムゾーンはUTC固定なのですが、それを前提にコードを考えるとテストできないので明示的にUTCに変換する方が望ましいです。

dayjsを使ったサンプル

export function formatDate(params: {
    d?: Date,
    offsetInMinutes?: number,
}): string {
    if (params.d === undefined) {
        return ""
    }
    return dayjs(params.d)
        .utc()
        .subtract(params.offsetInMinutes ?? 0, "minutes")
        .format("YYYY-MM-DDTHH:mm:ss")
}

最後に

このサンプルはon-demand-dashboardを作る際に書いたコードです。
CloudWatch Dashboardのコストを削減できるon-demand-dashboardもよかったら触って見てください。

0
0
0

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