本文へスキップ

formatdate 関数

formatdate は、タイムスタンプを異なる時間形式に変換します。

コードブロック
formatdate(spec, timestamp)

OpenTofu言語では、タイムスタンプは慣例的にRFC 3339「日付と時刻形式」構文を使用して文字列として表されます。formatdate は、timestamp引数がこの構文に準拠した文字列である必要があります。

コードブロック
> formatdate("DD MMM YYYY hh:mm ZZZ", "2018-01-02T23:12:01Z")
02 Jan 2018 23:12 UTC
> formatdate("EEEE, DD-MMM-YY hh:mm:ss ZZZ", "2018-01-02T23:12:01Z")
Tuesday, 02-Jan-18 23:12:01 UTC
> formatdate("EEE, DD MMM YYYY hh:mm:ss ZZZ", "2018-01-02T23:12:01-08:00")
Tue, 02 Jan 2018 23:12:01 -0800
> formatdate("MMM DD, YYYY", "2018-01-02T23:12:01Z")
Jan 02, 2018
> formatdate("HH:mmaa", "2018-01-02T23:12:01Z")
11:12pm

仕様構文

フォーマット指定は、次の表のフォーマットシーケンスを含む文字列です。この関数は、RFC822、RFC850、RFC1123で定義されているような一般的な機械指向のタイムスタンプ形式を作成することを目的としています。ロケールを認識しないため、真に人間向けのデータフォーマットには適していません。特に、月と曜日の名前は英語でのみ生成できます。

仕様には、次のシーケンスを含めることができます。

シーケンス結果
YYYY4桁以上の年、例:「2006」
YY年を100で割った余り、少なくとも2桁にゼロ埋め、例:「06」
MMMM省略しない英語の月名、例:「January」
MMM3文字に省略した英語の月名、例:「Jan」
MM2桁にゼロ埋めした月の番号、1月は「01」
Mゼロ埋めなしの月の番号、1月は「1」
DD2桁にゼロ埋めした月の日の番号、例:「02」
Dゼロ埋めなしの月の日の番号、例:「2」
EEEE省略しない英語の曜日の名前、例:「Monday」
EEE3文字に省略した英語の曜日の名前、例:「Mon」
hh2桁にゼロ埋めした24時間制の番号、例:「02」
hゼロ埋めなしの24時間制の番号、例:「2」
HH2桁にゼロ埋めした12時間制の番号、例:「02」
Hゼロ埋めなしの12時間制の番号、例:「2」
AA大文字のAM/PMマーカー、例:「AM」
aa小文字のAM/PMマーカー、例:「am」
mm2桁にゼロ埋めした時間内の分、例:「05」
mゼロ埋めなしの時間内の分、例:「5」
ss2桁にゼロ埋めした分内の秒、例:「09」
s分内の秒、例:「9」
ZZZZZコロンで時と分を区切ったタイムゾーンオフセット、例:「-08:00」
ZZZZ符号と数字のみのタイムゾーンオフセット、例:「-0800」
ZZZZZZZと同様ですが、UTCの場合は「UTC」という特別なケースがあります。
ZZZZZZと同様ですが、UTCの場合は「Z」という特別なケースがあります。

句読点などの英字以外の文字は、出力にそのまま再現されます。フォーマット文字列にリテラルの英字を含めるには、単一引用符'で囲みます。リテラルの引用符を含めるには、引用符を2つ重ねてエスケープします。

コードブロック
> formatdate("h'h'mm", "2018-01-02T23:12:01-08:00")
23h12
> formatdate("H 'o''clock'", "2018-01-02T23:12:01-08:00")
11 o'clock

このフォーマット指定構文は、構文に精通していなくても、どのフォーマットになるかを推測しやすいように意図されています。そのため、一般的なフォーマットにあらかじめ定義された省略形はありませんが、様々なRFCで指定されたフォーマットのフォーマット文字列を以下に示します。必要に応じて設定にコピーしてください。

  • RFC 822 および RFC 2822"DD MMM YYYY hh:mm ZZZ"
  • RFC 850"EEEE, DD-MMM-YY hh:mm:ss ZZZ"
  • RFC 1123"EEE, DD MMM YYYY hh:mm:ss ZZZ"
  • RFC 3339"YYYY-MM-DD'T'hh:mm:ssZ"(ただし、これは入力フォーマットでもあるため、このような変換は冗長です。)
  • format は、任意のデータに対するより汎用的なフォーマット関数です。
  • timestamp は、formatdateへの入力に適したフォーマットで現在の日時を返します。