- OpenTofu言語
- 関数
- timecmp
timecmp
関数
timecmp
は2つのタイムスタンプを比較し、それらのタイムスタンプが表す瞬間の順序を表す数値を返します。
timecmp(timestamp_a, timestamp_b)
条件 | 戻り値 |
---|---|
timestamp_a は timestamp_b より前 | -1 |
timestamp_a は timestamp_b と同じ瞬間 | 0 |
timestamp_a は timestamp_b より後 | 1 |
タイムスタンプの比較において、timecmp
は各タイムスタンプに指定されたUTCオフセットを考慮します。例えば、06:00:00+0200
と04:00:00Z
は、最初のタイムスタンプの+0200
オフセットを考慮すると、同じ瞬間です。
OpenTofu言語では、タイムスタンプは慣習的にRFC 3339「日付と時刻のフォーマット」構文を使用して文字列で表されます。timecmp
は、2つの引数がこの構文に準拠した文字列であることを要求します。
例
> timecmp("2017-11-22T00:00:00Z", "2017-11-22T00:00:00Z")
0
> timecmp("2017-11-22T00:00:00Z", "2017-11-22T01:00:00Z")
-1
> timecmp("2017-11-22T01:00:00Z", "2017-11-22T00:00:00Z")
1
> timecmp("2017-11-22T01:00:00Z", "2017-11-22T00:00:00-01:00")
0
timecmp
は、指定されたタイムスタンプが特定の範囲内にあるかどうかを確認するカスタム条件チェックを定義する際に特に役立ちます。例えば、次のリソースの事後条件は、TLS証明書(またはその他の期限切れになるオブジェクト)が「適用」ステップの時刻から30日より早く期限切れになる場合にエラーを発生させます。
lifecycle {
postcondition {
condition = timecmp(timestamp(), timeadd(self.expiration_timestamp, "-720h")) < 0
error_message = "Certificate will expire in less than 30 days."
}
}