Unix时间戳在Groovy脚本中转换为ISO8601



我是Groovy的新手,我参与了一个使用Groovy脚本的项目。我需要将Unix时间戳转换为Groovy script中的ISO 8601格式。我还找不到一个简单明了的解决方案。

我现在有以下代码。

BigDecimal date = new BigDecimal('1641917151.819') //sample Unix timestamp
long date_int = (date.multiply(1000)).longValue()
def prov_time = new Date( date_int )
String iso_time = prov_time.format("MM/dd/yyyy'T'HH:mm:ss.SSS'Z'")
println(iso_time)

然而,当我在FlowableScript任务中尝试此操作时,会出现以下错误;

评估脚本时出现问题:javax.script.ScriptException:groovy.lang.MissingMethodException:没有方法的签名:java.util.Date.format((适用于参数类型:(String(值:[MM/dd/yyyy'T'HH:MM:ss.SSS'Z']可能的解决方案:from(java.time.Sinstant(,stream((,getAt(java.lang.String(,解析(java.lang.String(、打印(java.lang.Object(,print(java.io.PrintWriter(

我的理解是Groovy可能存在版本问题,它不再支持这种方法。(因为当我在Groovy控制台上尝试时,我得到了预期的结果(。此外,我读到"日期"类型已经很旧了,不再那么常用了。因此,这里应该采取什么方法?

java.time.Instant具有来自epoch时间戳的构建器,其字符串表示为祖鲁语的ISO8601:

java.time.Instant.ofEpochMilli((1641917151.819 * 1000).longValue()).toString()
// -> 2022-01-11T16:05:51.819Z

最新更新