我正在实现与需要当前日期和时间的外部服务的集成。该服务的文档说它接受 ISO 8601 格式的日期时间,但这只是部分正确 - 它不支持时区偏移。
当我${date:now:yyyy-MM-dd'T'HH:mm:ssZ}在 Camel 中尝试时,我得到2017-08-16T21:45:10+0200,这是服务不可接受的。
有没有办法让骆驼日期格式以UTC格式输出当前日期?我想得到2017-08-16T19:45:10Z而不是2017-08-16T21:45:10+0200.
我想避免为此编写单独的 bean,所以我更喜欢纯粹在 XML DSL 中实现的解决方案。
我设法使用 Groovy 表达式提出了一个解决方案:
<groovy>
java.time.ZonedDateTime.now(java.time.ZoneOffset.UTC)
.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssX"))
</groovy>
Run Code Online (Sandbox Code Playgroud)
Camel Simple语言有date-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}
Run Code Online (Sandbox Code Playgroud)
那将变成:
2022-03-22T16:08:43 // CET is UTC+1
2022-03-22T15:08:43 // UTC
2022-03-22T10:08:43 // EST is UTC-5
Run Code Online (Sandbox Code Playgroud)
最后一个参数是java.text.SimpleDateFormat模式,您可以使用它来获取您想要的任何时区指示符。例如
${date-with-timezone:now:UTC:yyyy-MM-dd'T'HH:mm:ssX}
Run Code Online (Sandbox Code Playgroud)
给你:
2022-03-22T15:08:43Z
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6590 次 |
| 最近记录: |