如何解决有没有一种方法可以使用Dataweave 2.0将特定的输入日期即120042转换为DD MMM YYYY
Order_Entry_Date字段格式为6位数字。 “ 120xxx”>“ 120” = 2020年,“ xxx”是该年的天数。例如:121001 = 2021年1月1日
此输入格式-“ YYYY-MM-DD-HH.mm.ss.decimalsecond”中的Record_Timestamp字段以输出格式“ DD MMM YYYY-HH:mm:ss”(省略小数秒)
输入
{
"orders": [
{
"Order_Number": "1112999","Order_Entry_Date": "120042","Record_Timestamp": "2020-08-09-21.10.21.350090"
}
]
}
输出
{
"orders": [
{
"Order_Number": "1112999","Order_Entry_Date": "13 Mar 2020","Record_Timestamp": "09 Aug 2020 21:10:21"
}
]
}
解决方法
看来这是Order_Entry_Date
字段的儒略式日期。
以下脚本应该可以产生预期的输出。
%dw 2.0
output application/json
fun convertJulianDate(d) = do {
var day = d[3 to 5]
var year = d[1 to 2]
---
((("0101" ++ year ) as Date {format: "ddMMyy"}) + ("P$(day - 1)D" as Period)) as Date {format: "dd MMM yyyy"}
}
---
{
orders: payload.orders map {
"Order_Number": $.Order_Number,"Order_Entry_Date": convertJulianDate($.Order_Entry_Date),"Record_Timestamp": $.Record_Timestamp as LocalDateTime {format: "yyyy-MM-dd-HH.mm.ss.SSSSSS"} as String {format: "dd MMM yyyy HH:mm:ss"}
}
}
,
尝试一下:
%dw 2.0
output application/json
var data = {
"orders": [
{
"Order_Number": "1112999","Order_Entry_Date": "120042","Record_Timestamp": "2020-08-09-21.10.21.350090"
}
]
}
---
data.orders map {
Order_Number: $.Order_Number,Order_Entry_Date: $.Order_Entry_Date,Record_TimeStamp: $.Record_Timestamp[0 to 18]
as LocalDateTime {format: "yyyy-MM-dd-HH.mm.ss"}
as String {format: "dd MMM yyyy HH:mm:ss"}
}
我不知道您在Order_Entry_Date
中有什么样的约会,所以随它去吧。
我还对时间戳格式进行了假设。如果您提供值的范围,我也许可以修改。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。