2017-08-16 98 views
0

我正在实施与需要当前日期和时间的外部服务的集成。该服务的文档说它接受ISO 8601格式的日期时间,但这只是部分正确 - 它不支持时区偏移量。在Apache Camel格式化UTC的当前日期和时间

当我在骆驼尝试${date:now:yyyy-MM-dd'T'HH:mm:ssZ}时,我得到2017-08-16T21:45:10+0200,这是服务不能接受的。

有没有办法使骆驼日期格式输出当前日期在UTC?我想获得2017-08-16T19:45:10Z而不是2017-08-16T21:45:10+0200

我想避免为此编写单独的bean,所以我更喜欢纯粹在XML DSL中实现的解决方案。

+0

我看到的唯一方法是从[格式字符串]删除时区(https://docs.oracle.com /javase/8/docs/api/java/text/SimpleDateFormat.html),然后[设置虚拟机的默认时区](https://stackoverflow.com/questions/2493749/how-to-set-a-jvm-timezone - 适当)到'UTC'。 – Ralf

回答

0

我已经成功地想出使用Groovy表达的溶液:

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