在 dataweave 2.0 中将格式为 EEE MMM dd HH:mm:ss zzz yyyy 的日期转换为 dd/MM/yyyy
Convert date with format EEE MMM dd HH:mm:ss zzz yyyy to dd/MM/yyyy in dataweave 2.0
我有一些 EEE MMM dd HH:mm:ss zzz yyyy
格式的 SAP 日期。例如,Mon Sep 02 00:00:00 BST 2019
。我需要使用 dataweave 2.0 将其转换为 dd/MM/yyyy
,但直到现在我都没有成功。
我认为这种转变可能 运行 很好,但事实并非如此:
%dw 2.0
output application/json
---
{
timestamp: "Mon Sep 02 00:00:00 BST 2019" as LocalDateTime {format: "EEE MMM dd HH:mm:ss zzz yyyy"} >> "BST" as String {format: "dd/MM/yyyy"}
}
我要转换的数据有点复杂:
[
{
"id": 1,
"timestamp": "Tue Jan 06 00:00:00 BST 2000"
},
{
"id": 2,
"timestamp": "Sun Dec 05 00:00:00 BST 2015"
},
{
"id": 3,
"timestamp": "Mon Oct 04 00:00:00 BST 2017"
},
{
"id": 4,
"timestamp": "Sat Jul 03 00:00:00 BST 2020"
},
{
"id": 5,
"timestamp": "Mon Sep 02 00:00:00 BST 2019"
}
]
您需要使用输入格式将字符串转换为日期,然后将日期转换为具有输出格式的字符串。请注意,输入有一个时区,因此它不能是 LocalDateTime。
%dw 2.0
output application/json
---
"Mon Sep 02 00:00:00 BST 2019" as DateTime {format: "EEE MMM dd HH:mm:ss zzz yyyy"} as String { format: "dd/MM/yyyy" }
您输入的星期几不正确。我固定为:
[
{
"id": 1,
"timestamp": "Thu Jan 06 00:00:00 BST 2000"
},
{
"id": 2,
"timestamp": "Sat Dec 05 00:00:00 BST 2015"
},
{
"id": 3,
"timestamp": "Wed Oct 04 00:00:00 BST 2017"
},
{
"id": 4,
"timestamp": "Fri Jul 03 00:00:00 BST 2020"
},
{
"id": 5,
"timestamp": "Mon Sep 02 00:00:00 BST 2019"
}
]
要解析每个时间戳和 return 您可以使用的数组:
%dw 2.0
output application/json
---
payload map $.timestamp as DateTime {format: "EEE MMM dd HH:mm:ss zzz yyyy"} as String { format: "dd/MM/yyyy" }
您遇到的问题是因为输入负载中的某些日期无效。检查此问题以获取更多详细信息:
如果修复无效条目的星期几,dataweave 表达式将按预期工作(确保星期几对应于每个时间戳的实际星期几)。
此外,请确保将时间戳转换为 DateTime,因为它包含时区:
%dw 2.0
output application/json
---
payload map (item, index) ->
{
timestamp: item.timestamp as DateTime {format: "EEE MMM dd HH:mm:ss zzz yyyy"} as Date {format: "dd/MM/yyyy"}
}
我有一些 EEE MMM dd HH:mm:ss zzz yyyy
格式的 SAP 日期。例如,Mon Sep 02 00:00:00 BST 2019
。我需要使用 dataweave 2.0 将其转换为 dd/MM/yyyy
,但直到现在我都没有成功。
我认为这种转变可能 运行 很好,但事实并非如此:
%dw 2.0
output application/json
---
{
timestamp: "Mon Sep 02 00:00:00 BST 2019" as LocalDateTime {format: "EEE MMM dd HH:mm:ss zzz yyyy"} >> "BST" as String {format: "dd/MM/yyyy"}
}
我要转换的数据有点复杂:
[
{
"id": 1,
"timestamp": "Tue Jan 06 00:00:00 BST 2000"
},
{
"id": 2,
"timestamp": "Sun Dec 05 00:00:00 BST 2015"
},
{
"id": 3,
"timestamp": "Mon Oct 04 00:00:00 BST 2017"
},
{
"id": 4,
"timestamp": "Sat Jul 03 00:00:00 BST 2020"
},
{
"id": 5,
"timestamp": "Mon Sep 02 00:00:00 BST 2019"
}
]
您需要使用输入格式将字符串转换为日期,然后将日期转换为具有输出格式的字符串。请注意,输入有一个时区,因此它不能是 LocalDateTime。
%dw 2.0
output application/json
---
"Mon Sep 02 00:00:00 BST 2019" as DateTime {format: "EEE MMM dd HH:mm:ss zzz yyyy"} as String { format: "dd/MM/yyyy" }
您输入的星期几不正确。我固定为:
[
{
"id": 1,
"timestamp": "Thu Jan 06 00:00:00 BST 2000"
},
{
"id": 2,
"timestamp": "Sat Dec 05 00:00:00 BST 2015"
},
{
"id": 3,
"timestamp": "Wed Oct 04 00:00:00 BST 2017"
},
{
"id": 4,
"timestamp": "Fri Jul 03 00:00:00 BST 2020"
},
{
"id": 5,
"timestamp": "Mon Sep 02 00:00:00 BST 2019"
}
]
要解析每个时间戳和 return 您可以使用的数组:
%dw 2.0
output application/json
---
payload map $.timestamp as DateTime {format: "EEE MMM dd HH:mm:ss zzz yyyy"} as String { format: "dd/MM/yyyy" }
您遇到的问题是因为输入负载中的某些日期无效。检查此问题以获取更多详细信息:
如果修复无效条目的星期几,dataweave 表达式将按预期工作(确保星期几对应于每个时间戳的实际星期几)。
此外,请确保将时间戳转换为 DateTime,因为它包含时区:
%dw 2.0
output application/json
---
payload map (item, index) ->
{
timestamp: item.timestamp as DateTime {format: "EEE MMM dd HH:mm:ss zzz yyyy"} as Date {format: "dd/MM/yyyy"}
}