以Apache Camel格式将当前日期和时间设置为UTC

w51jfk4q  于 2022-11-07  发布在  Apache
关注(0)|答案(2)|浏览(165)

我正在实现与需要当前日期和时间的外部服务的集成。该服务的文档说明它接受ISO 8601格式的日期时间,但这只是部分正确的-它不支持时区偏移。
当我在Camel中尝试${date:now:yyyy-MM-dd'T'HH:mm:ssZ}时,我得到的是2017-08-16T21:45:10+0200,这是服务所不能接受的。
有没有办法让Camel日期格式以UTC格式输出当前日期?我希望得到2017-08-16T19:45:10Z而不是2017-08-16T21:45:10+0200
我希望避免为此编写单独bean,因此我更喜欢完全用XMLDSL实现的解决方案。

gojuced7

gojuced71#

我已经设法使用Groovy表达式想出了一个解决方案:

<groovy>
  java.time.ZonedDateTime.now(java.time.ZoneOffset.UTC)
      .format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssX"))
</groovy>
cyej8jka

cyej8jka2#

Camel Simpledate-with-timezone变量,可以用来查询不同时区的时间,如:

${date-with-timezone:now:CET:yyyy-MM-dd'T'HH:mm:ss}
${date-with-timezone:now:UTC:yyyy-MM-dd'T'HH:mm:ss}
${date-with-timezone:now:EST:yyyy-MM-dd'T'HH:mm:ss}

那就变成:

2022-03-22T16:08:43 // CET is UTC+1
2022-03-22T15:08:43 // UTC
2022-03-22T10:08:43 // EST is UTC-5

最后一个参数是java.text.SimpleDateFormat模式,你可以用它来获得你想要的任何时区标志符。

${date-with-timezone:now:UTC:yyyy-MM-dd'T'HH:mm:ssX}

为您提供:

2022-03-22T15:08:43Z

相关问题