カスタムウィジェットで得られる情報
カスタムウィジェット詳細
詳細は公式ドキュメントを見るのが一番確実です。
タイムゾーン関連部分
timezone: {
label: string, // Local or UTC
offsetInMinutes: number
},
labelにAsia/Tokyoのような文字列が入ると予想していたのですが、実際にはLocalかUTCのいずれかが入ります。Management Consoleと同じイメージですね。
ユーザにはどう表示するべきか
JSTを前提に書くのが一番楽ではありますが、offsetInMinutesが取得できるのでこれを元に時差を調整して変換します。
- 日時をUTCタイムゾーンに変換する
- offset分減算する
- タイムゾーン情報なしで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もよかったら触って見てください。