首页 > 解决方案 > 使用 DataWeave 1.0 在 Mule-3.8.4 中转换为 SalesForce 日期时间格式

问题描述

我正在尝试将datetimeCSV 中的列转换为 salesforce 日期时间格式以进行 upsert。我在 mule-3.8.4 dataweave1.0 中尝试了如下表达式,但出现错误。

我尝试了以下方法:

第一次尝试

Test_Date: "1/14/19 6:31 PM" as :localdatetime { format: "M/dd/yy h:mm a" } as :localdatetime { format: "YYYY-MM-DD'T'hh:mm:ssZ" })

预期产出:2019-01-14T06:31:00Z

实际输出:2019 年 1 月 14 日星期一 18:31:00 EST

在 Salesforce 中进行 Upsert 之后,它看起来像这样2019-01-14T00:00:00.000+0000:它没有节省时间。


第二次尝试

Test_Date: "1/14/19 6:31 PM" as :localdatetime { format: "M/dd/yy h:mm a" } as :localdatetime { format: "YYYY-MM-DD'T'hh:mm:ss" })

预期产出:2019-01-14T06:31:00

实际输出:2019 年 1 月 14 日星期一 18:31:00 EST

在 Salesforce 中进行 Upsert 之后,它看起来像这样2019-01-14T00:00:00.000+0000:它仍然没有节省时间。

问题是什么?

标签: javasalesforcemuledataweave

解决方案


您是否尝试将其作为 Salesforce 发送String?一旦某些东西是 type LocalDateTime,就没有进一步的格式化。格式化仅用于将 a 解析String为 aLocalDateTime或将 a 的输出格式化LocalDateTime为 a String。例如:

"1/14/19 6:31 PM" 
  as :localdatetime { format: "M/dd/yy h:mm a" }         // This parses the string as LocalDateTime
  as :localdatetime { format: "YYYY-MM-DD'T'hh:mm:ssZ" } // This doesn't do anything, it's already LocalDateTime

如果您想使用一个String表示日期时间并将其格式化为String表示同一日期时间的不同格式,您可以这样做:

...
%var inputFormat  = "M/dd/yy h:mm a"
%var outputFormat = "yyyy-MM-dd'T'HH:mm:ss"
---
"1/14/19 6:31 PM" 
  as :localdatetime { format: inputFormat  } // Used to parse the input string
  as :string        { format: outputFormat } // Used to format the output string

最后一个脚本的输出应该是"2019-01-14T18:31:00"


推荐阅读