【问题标题】:Dataweave 2 - Cannot coerce String to DateTimeDataweave 2 - 无法将字符串强制转换为 DateTime
【发布时间】:2019-05-23 09:55:27
【问题描述】:

我有一个 String 作为 DateTime 像这样2019-05-21 00:00:00.000。

这是我在 Dataweave 2 中用于将 String 转换为 DateTime 的代码:

SourceDate: payload.Source_date as DateTime {format: "yyyy-MM-dd'T'HH:mm:ss.SSSZ"}

但它返回此错误:

“无法将字符串 (2019-05-21 00:00:00.000) 强制转换为 DateTime,导致 作者:无法在索引 10 处解析文本“2019-05-21 00:00:00.000”

我需要使用 'T' 和 Z 来自动使用 TimeZone。

可能是什么问题?

【问题讨论】:

  • "我需要使用 'T' 和 Z 来自动使用 TimeZone。" - 然后你需要那些在你正在解析的字符串中。目前,您的值在日期和时间之间有一个空格,最后没有 Z。价值从何而来,你能改变它的格式吗?
  • 它来自一个 CSV 文件,它期望的格式是什么?
  • 您正在指定它所期望的格式:yyyy-MM-dd'T'HH:mm:ss.SSSZ。基本上,您必须使您指定的格式与您拥有的数据相匹配……或者自己修改该数据。

标签: datetime timezone mule dataweave string-to-datetime


【解决方案1】:

您可以使用 LocalDateTime,它将使用当前时区:

%dw 2.0
output application/json
---
SourceDate: payload.Source_date as LocalDateTime {format: "yyyy-MM-dd HH:mm:ss.SSS"}

你可以添加时区:

SourceDate: payload.Source_date as LocalDateTime {format: "yyyy-MM-dd HH:mm:ss.SSS"} >> "GMT+1"

【讨论】:

  • 问题是它设置了相同的日期2019-05-21 00:00:00.000。例如,如果我从 GMT+1 开始使用它,它不会再增加一分。
  • 如果有帮助就更新答案 {format: "yyyy-MM-dd HH:mm:ss.SSS"} >> "GMT+1"
猜你喜欢
  • 1970-01-01
  • 2023-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多