Dataweave 2.0 - 无法将String强制转换为LocalDateTime

问题描述 投票:0回答:2

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

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

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

输出字段:CreatedDate(String) - 示例: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"}

但它返回一个错误:

 Cannot coerce a String to a Localdatetime, caused by CreatedDate
mule dataweave string-to-datetime
2个回答
3
投票

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

%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


0
投票

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

希望这会帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.