根据输入日期创建日期数组
Create an array of dates based on the input dates
我有一个 JSON 负载为:
{
"start_date": "20210314",
"end_date": "20210613"
}
我想得到一个包含以下内容的数组:
[
{
"start_date": "20210314",
"end_date": "20210404"
},
{
"start_date": "20210405",
"end_date": "20210426"
},
{
"start_date": "20210427",
"end_date": "20210518"
}.... till the end date in JSON payload
]
start_date 和 end_date 已经在 日期 格式。
每个对象的日期间隔为 21 天
我正在 mule 4.
中创建一个 REST API
使用 Period 和数学运算符应该可以得到想要的结果。
输入
{
"start_date": "20210314",
"end_date": "20210824"
}
脚本
%dw 2.0
output application/json
var days=(payload.end_date as Date {"format": "uuuuMMdd"} - payload.start_date as Date {"format": "uuuuMMdd"}) as Number {"unit": "days"}
---
1 to ceil(days/21) map {
start_date:if(($$)==0)(payload.start_date) else (payload.start_date as Date {"format": "uuuuMMdd"} + (("P"++(21*($$)+($$))++"D") as Period )) as Date {"format": "uuuuMMdd"},
end_date: if(($$)==0)((payload.start_date as Date {"format": "uuuuMMdd"} + |P21D|) as Date {"format": "uuuuMMdd"})
else if (((payload.end_date as Date {"format": "uuuuMMdd"}) -((payload.start_date as Date {"format": "uuuuMMdd"} + (("P"++(21*($$) +21+($$))++"D") as Period )) as Date {"format": "uuuuMMdd"})) as Number {"unit" : "days"} < 0) payload.end_date
else (payload.start_date as Date {"format": "uuuuMMdd"} + (("P"++(21*($$) +21+ ($$))++"D") as Period )) as Date {"format": "uuuuMMdd"}
}
输出
[
{
"start_date": "20210314",
"end_date": "20210404"
},
{
"start_date": "20210405",
"end_date": "20210426"
},
{
"start_date": "20210427",
"end_date": "20210518"
},
{
"start_date": "20210519",
"end_date": "20210609"
},
{
"start_date": "20210610",
"end_date": "20210701"
},
{
"start_date": "20210702",
"end_date": "20210723"
},
{
"start_date": "20210724",
"end_date": "20210814"
},
{
"start_date": "20210815",
"end_date": "20210824"
}
]
我有一个 JSON 负载为:
{
"start_date": "20210314",
"end_date": "20210613"
}
我想得到一个包含以下内容的数组:
[
{
"start_date": "20210314",
"end_date": "20210404"
},
{
"start_date": "20210405",
"end_date": "20210426"
},
{
"start_date": "20210427",
"end_date": "20210518"
}.... till the end date in JSON payload
]
start_date 和 end_date 已经在 日期 格式。 每个对象的日期间隔为 21 天 我正在 mule 4.
中创建一个 REST API使用 Period 和数学运算符应该可以得到想要的结果。
输入
{
"start_date": "20210314",
"end_date": "20210824"
}
脚本
%dw 2.0
output application/json
var days=(payload.end_date as Date {"format": "uuuuMMdd"} - payload.start_date as Date {"format": "uuuuMMdd"}) as Number {"unit": "days"}
---
1 to ceil(days/21) map {
start_date:if(($$)==0)(payload.start_date) else (payload.start_date as Date {"format": "uuuuMMdd"} + (("P"++(21*($$)+($$))++"D") as Period )) as Date {"format": "uuuuMMdd"},
end_date: if(($$)==0)((payload.start_date as Date {"format": "uuuuMMdd"} + |P21D|) as Date {"format": "uuuuMMdd"})
else if (((payload.end_date as Date {"format": "uuuuMMdd"}) -((payload.start_date as Date {"format": "uuuuMMdd"} + (("P"++(21*($$) +21+($$))++"D") as Period )) as Date {"format": "uuuuMMdd"})) as Number {"unit" : "days"} < 0) payload.end_date
else (payload.start_date as Date {"format": "uuuuMMdd"} + (("P"++(21*($$) +21+ ($$))++"D") as Period )) as Date {"format": "uuuuMMdd"}
}
输出
[
{
"start_date": "20210314",
"end_date": "20210404"
},
{
"start_date": "20210405",
"end_date": "20210426"
},
{
"start_date": "20210427",
"end_date": "20210518"
},
{
"start_date": "20210519",
"end_date": "20210609"
},
{
"start_date": "20210610",
"end_date": "20210701"
},
{
"start_date": "20210702",
"end_date": "20210723"
},
{
"start_date": "20210724",
"end_date": "20210814"
},
{
"start_date": "20210815",
"end_date": "20210824"
}
]