【问题标题】:Mulesoft Dataweave timestamp conversion issuesMulesoft Dataweave 时间戳转换问题
【发布时间】:2018-10-15 02:44:34
【问题描述】:

我正在尝试将字符串从有效负载转换为格式 dd/mm/yyyy

这是来自payload的字符串:

2016 年 3 月 9 日下午 4:19:33

我的 Dataweave 转换:

timestamp: payload.metas.datas[0].timestamp as :datetime {format: "MMM d, yyyy hh:mm:ss a"}

我收到以下错误:

无法将 :string 强制转换为 :datetime,原因是 :Text 'Mar 9, 2016 04:19:33 PM' 无法解析:无法从 TemporalAccessor 获取 ZonedDateTime:DateTimeBuilder[, ISO, null, 2016- 03-09, 16:19:33],输入 org.threeten.bp.format.DateTimeBuilder。

谁能建议这应该怎么做?

非常感谢。 迈克

【问题讨论】:

    标签: mule mule-studio dataweave


    【解决方案1】:

    无法解析日期,因为它无法确定时区。你可以试试下面的代码

    timestamp: payload.metas.datas[0].timestamp as :localdatetime {format: "MMM d, yyyy hh:mm:ss a"} as :string {format: "dd/mm/yyyy"}
    

    HTH

    【讨论】:

    • 虽然是推断出来的,但我认为明确说明为什么会这样会有所帮助::datetime 需要时区,而 :localdatetime 不需要。
    • 根据documentation :datetime 是 'Date' + 'Time' + 'TimeZone' 的连词。而:localdatetime 是“日期”+“时间”的连词。使用本地时区的地方。
    【解决方案2】:

    这对我有用。

    timestamp: payload.metas.datas[0].timestamp as LocalDateTime {format: "MMM d, yyyy H:mm:ss a"} as String {format: "yyyy-MM-dd HH:mm:ss"}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 2017-12-23
      • 2018-08-01
      相关资源
      最近更新 更多