- OpenTofu 语言
- 函数
- timecmp
timecmp
函数
timecmp
比较两个时间戳,并返回一个数字,表示这些时间戳所代表的时刻的顺序。
timecmp(timestamp_a, timestamp_b)
条件 | 返回值 |
---|---|
timestamp_a 在 timestamp_b 之前 | -1 |
timestamp_a 与 timestamp_b 是同一时刻 | 0 |
timestamp_a 在 timestamp_b 之后 | 1 |
在比较时间戳时,timecmp
会考虑每个时间戳中给出的 UTC 偏移量。例如,在考虑第一个时间戳上的 +0200
偏移量后,06:00:00+0200
和 04:00:00Z
是同一时刻。
在 OpenTofu 语言中,时间戳通常使用 RFC 3339 “日期和时间格式”语法以字符串形式表示。timecmp
要求其两个参数都必须是符合此语法的字符串。
示例
> 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."
}
}