Dataweave 2.0 - 无法将字符串强制转换为 LocalDateTime

Dataweave 2.0 - Cannot coerce String to LocalDateTime

我得到一个 CSV 文件,其中包含我转换为 application/java 的数据。

其中一个字段 (Creation_Date) 是 DateTime 字段,我将其作为字符串获取,因为输出字段是字符串类型。

输入字段: Creation_Date (String) - 示例:2019 -03-02 07:00:00.000

输出字段:创建日期(字符串)-示例:2019-03-02 08:00:00.000

我在我的 Dataweave 2.0 转换中使用该代码,因为我想将输入日期时间再增加一小时:

CreatedDate: payload.Creation_date as LocalDateFormat {format: "yyyy-MM-dd HH:mm:ss+01:00"}

但是它returns一个错误:

 Cannot coerce a String to a Localdatetime, caused by CreatedDate

您可以在dataweave 2.0 中使用now()。检查 URL: https://docs.mulesoft.com/mule-runtime/4.1/dw-core-functions-now.

希望对您有所帮助。

要添加或修改部分数据(例如添加小时数),您应该转换为 LocalDateTime,然后使用 Period 将特定时间段添加到日期时间。还需要根据您的预期 input/output 以毫秒为单位进行格式化。试试这个,但为您的示例将 pretendPayload 更改为 payload:

%dw 2.0
output application/json
var pretendPayload = {Creation_date: "2019-03-02 07:00:00.000"}

type LocalDateFormat = LocalDateTime { format: "yyyy-MM-dd HH:mm:ss.SSS" }
---
{
    CreatedDate: (pretendPayload.Creation_date as LocalDateFormat + |PT1H|) as String{format: "yyyy-MM-dd HH:mm:ss.SSS" }
}

经期信息:https://docs.mulesoft.com/mule-runtime/4.1/dataweave-types#dw_type_dates_period