DataWeave:将字符串解析为 DateTime 时,无法从 TemporalAccessor 获取 ZonedDateTime

问题描述

我在使用 Dataweave 2 转换时遇到问题。我有

var parseDate = (dateStr) -> dateStr as DateTime {format: "yyyy-MM-dd"}

但是当我运行这段代码时,我得到:

引起:org.mule.runtime.api.el.E​​xpressionExecutionException: 无法将 String (2019-03-26) 强制转换为 DateTime,原因是:Text 无法解析“2019-03-26”:无法从中获取 zoneddatetime TemporalAccessor: {},ISO 解析为 2019-03-26 类型 java.time.format.Parsed

我使用 DateTime 是因为在创建元数据时会检测到它。但是类本身有 LocalDate bookingDate; - 问题是当我尝试使用 LocalDate 时 - 我收到一个错误

Unable to resolve reference of: `LocalDate`.

遇到这个问题我该怎么办?我可以以某种方式正确解析它吗?或者我可以对上面提到的LocalDate问题做些什么?

解决方法

由于您的输入字符串只有日期部分,您可以使用以下 DataWeave 表达式:

var parseDate = (dateStr) -> dateStr as Date {format: "yyyy-MM-dd"}