Mule - 从 m/dd/yy 到 yyyy-mm-dd 的日期格式

Mule - Date format from m/dd/yy to yyyy-mm-dd

想要将日期转换为上述要求的格式。是否可以在 datamapper 中编写 groovy 脚本来执行此操作?如果可以,请举个例子。或者我可以引用另一个表达式或组件吗?

这里是 link,它在 java 中解释了如何做。您可以轻松地对其进行 groovify。

这里是脚本

import java.text.SimpleDateFormat

def OLD_FORMAT = "m/dd/yy"
def NEW_FORMAT = "yyyy-MM-dd"
// August 12, 2010
def oldDateString = "8/12/10"
def sdf = new SimpleDateFormat(OLD_FORMAT)
def d = sdf.parse(oldDateString)
sdf.applyPattern(NEW_FORMAT)
newDateString = sdf.format(d)
println "Date in modified format : $newDateString"

编辑: 根据评论

根据源格式更改

我认为完成所需操作的最简单方法是编辑数据映射器脚本并替换执行日期映射的行:

output.date = date2str(str2date(input.date,"d/mm/yy"), "yyyy-mm-dd");

但相应地替换输入和输出字段。

您也可以在表达式中使用格式化方法来设置日期,如下所示:

flowVars.Timestamp = server.dateTime.format("YYYYMMDDHHmm");
#[server.dateTime.format('yyyy-MM-dd')]

我不喜欢这种嵌套。

我更喜欢上述答案的变体,我只保留内部函数:

output.date = str2date(input.date,"m/dd/yy")

但随后通过将字段设置为格式为 "yyyy-MM-dd".

的日期,在数据映射器的图形编辑器中定义了输出格式

这两种方法都有效,但我发现这种方法更容易阅读,也更容易向其他人解释。