java - 使用 DataWeave 1.0 在 Mule-3.8.4 中转换为 SalesForce 日期时间格式
问题描述
我正在尝试将datetime
CSV 中的列转换为 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
:它仍然没有节省时间。
问题是什么?
解决方案
您是否尝试将其作为 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"
推荐阅读
- node.js - 关于如何在一轮请求/响应中发布大量消息有什么建议吗?
- java - 为什么我的 count 方法不应该返回 false ?
- c# - 容器类的 C# DI 实例化(IList、IEnumerable、...)
- javascript - 如何旋转画布以使先前绘制的形状也随旋转的上下文一起移动
- hybris - 添加新的 Cms PageType "VendorPage"
- excel - VBA代码将集合值从主表复制到多张表的最后一行
- javascript - Bootstrap 水平表单和列更改
- xamarin.forms - Xamarin ListView 绑定
- unit-testing - 协程测试异常未使用 TestCoroutineDispatcher 和 TestCoroutineScope 处理
- java - Spring Boot + Thymeleaf:动态更新属性值