当前位置: 首页 > 知识库问答 >
问题:

Groovy脚本中Unix时间戳到ISO 8601的转换

呼延靖
2023-03-14

我是Groovy的新手,我正在从事一个使用Groovy脚本的项目。我需要在Groovy脚本中将Unix时间戳转换为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)

然而,当我在Flowable Script Task中尝试此操作时,会出现以下错误;

问题评估脚本:javax.script.ScriptExc的:groovy.lang.Mis看作方法异常:没有签名的方法:java.util.Date.format()适用于参数类型:(String)值:[MM/dd/yyyy'T'HH: mm:ss.SSS'Z']可能的解决方案:从(java.time.Instant),流(),getAT(java.lang.String),解析(java.lang.String),打印(java.lang.对象),打印(java.io.PrintWriter)

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

共有1个答案

步博涉
2023-03-14

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

java.time.Instant.ofEpochMilli((1641917151.819 * 1000).longValue()).toString()
// -> 2022-01-11T16:05:51.819Z
 类似资料:
  • 我知道这是一个非常常见的问题,但我觉得我找到的答案并没有真正解决问题。我将概述我的具体用例,并对来自其他SO答案和网络的信息进行总结。 对于我正在编写的服务,数据库条目被创建并存储在移动设备和我们的网站上,需要以两种方式同步。我们目前的目标是Android和iOS,它们都使用sqlite作为关系数据库。服务器端是使用Django和MySQL在Python中实现的,但将来可能会有其他解决方案取代它。

  • 我有这样一个时间戳:

  • 问题内容: 我将时间作为Unix时间戳存储在MySQL数据库中,并将其发送到一些JavaScript代码。我怎么会得到时间呢? 例如,以HH / MM / SS格式。 问题答案: let unix_timestamp = 1549312452 有关Date对象的更多信息,请参考MDN或ECMAScript5规范。

  • 问题内容: 是否有32位系统的64位Unix时间戳转换的C ++实现?我需要转换为64位整数,反之亦然,包括leap年,时区和UTC。还需要它可移植,至少对于GNU / Linux和Windows而言。 问题答案: 你需要: 最初(2011年),此答案包含指向2038bug.com的链接,可以在其中下载包含上述功能的小型库。那时,该库已从2038bug.com中删除,链接断开并由主持人从答案中删除

  • 在我的数据集中,我有一个变量< code>duration,其中有200万行< code>ISO 8601格式的数据。示例格式:< code>PT21S或< code>PT5M29S,< code>PT1M16S 我在将此字符串变量转换为时间时遇到问题。目前我正在使用查询: 通过该查询,可以区分持续时间是小时、分钟还是秒。我想将字符串持续时间转换为时间。我用过Regex和cast,但没有成功。当我

  • 看来我星期一早上有个案子!!! 正如你们所能看到的,我的本地机器位于东部时区,日光节约已经生效。这可以从下面的“日期”命令中看到。 然后我使用php生成了一个unix时间戳。它应该给出您当前的时间并在1970年1月1日的UTC 0:0:0将其转换为Unix纪元。 我的mysql会话被设置为UTC,我想象1460992469表示为mktime转换为UTC。 问题是转换回est不承认夏令时。谁能帮我指