Mule Dataweave:无法将 :string 强制转换为 :localdatetime
Mule Dataweave: Cannot coerce a :string to a :localdatetime
伙计们在尝试转换为日期时间时遇到此错误:
Exception while executing:
utcTime: (payload as :localdatetime {format: "yyyy-MM-dd'T'HH:mm:ssZ" } >> "UTC")
^
Cannot coerce a :string to a :localdatetime, caused by :Text '2018-09-25T13:09:16.258Z' could not be parsed at index 19.
以下是我的代码:
<flow name="testFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/datetime" doc:name="HTTP"/>
<set-payload value="#[server.dateTime.format("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")]" doc:name="Set Payload"/>
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
{
utcTime: (payload as :localdatetime {format: "yyyy-MM-dd'T'HH:mm:ssZ" } >> "UTC")
}
]]></dw:set-payload>
</dw:transform-message>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
</flow>
您的原始格式与您尝试转换的格式不同(缺少毫秒数):
yyyy-MM-dd'T'HH:mm:ss.SSSZ
对比 yyyy-MM-dd'T'HH:mm:ssZ
设置负载时,输入文字字符'Z' (yyyy-MM-dd'T'HH:mm:ss.SSS'Z')。所以你可以将文字翻译回来:
(payload as :localdatetime{format: "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"} as :string {format: "yyyy-MM-dd'T'HH:mm:ss"} >> "UTC")
或者,您可以考虑时区:
<flow name="testFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/datetime" doc:name="HTTP"/>
<set-payload value="#[server.dateTime.format("yyyy-MM-dd'T'HH:mm:ss.SSSZ")]" doc:name="Set Payload"/>
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
{
utcTime: (payload as :localdatetime {format: "yyyy-MM-dd'T'HH:mm:ss.SSSZ" } as :string {format: "yyyy-MM-dd'T'HH:mm:ss"} >> "UTC")
}
]]></dw:set-payload>
</dw:transform-message>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
</flow>
伙计们在尝试转换为日期时间时遇到此错误:
Exception while executing:
utcTime: (payload as :localdatetime {format: "yyyy-MM-dd'T'HH:mm:ssZ" } >> "UTC")
^
Cannot coerce a :string to a :localdatetime, caused by :Text '2018-09-25T13:09:16.258Z' could not be parsed at index 19.
以下是我的代码:
<flow name="testFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/datetime" doc:name="HTTP"/>
<set-payload value="#[server.dateTime.format("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")]" doc:name="Set Payload"/>
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
{
utcTime: (payload as :localdatetime {format: "yyyy-MM-dd'T'HH:mm:ssZ" } >> "UTC")
}
]]></dw:set-payload>
</dw:transform-message>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
</flow>
您的原始格式与您尝试转换的格式不同(缺少毫秒数):
yyyy-MM-dd'T'HH:mm:ss.SSSZ
对比 yyyy-MM-dd'T'HH:mm:ssZ
设置负载时,输入文字字符'Z' (yyyy-MM-dd'T'HH:mm:ss.SSS'Z')。所以你可以将文字翻译回来:
(payload as :localdatetime{format: "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"} as :string {format: "yyyy-MM-dd'T'HH:mm:ss"} >> "UTC")
或者,您可以考虑时区:
<flow name="testFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/datetime" doc:name="HTTP"/>
<set-payload value="#[server.dateTime.format("yyyy-MM-dd'T'HH:mm:ss.SSSZ")]" doc:name="Set Payload"/>
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
{
utcTime: (payload as :localdatetime {format: "yyyy-MM-dd'T'HH:mm:ss.SSSZ" } as :string {format: "yyyy-MM-dd'T'HH:mm:ss"} >> "UTC")
}
]]></dw:set-payload>
</dw:transform-message>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
</flow>