2 月 30 日的 Dataweave 日期验证

Dataweave date validation for Feb 30

我想在 dataweave 中进行日期验证,如果日期无效则设置为空。

尝试过:

'2019/02/29' as Date{format: "yyyy/MM/dd"} default null 

打印“2019/02/28”。

尝试时:

'2019/03/45' as Date{format: "yyyy/MM/dd"} default null

取空成功

2 月份有解决办法吗?

对于:

'2019/02/29' as Date{format: "yyyy/MM/dd"} default null 

预期:空
实际:“2019/02/28”

DataWeave 似乎不按日历验证日期。另一种方法是创建一个验证函数来确认日期将保持不变:

%dw 2.0
output application/json
fun validDate(d) = if (d == d as Date {format: "yyyy/MM/dd"} as String {format: "yyyy/MM/dd"} ) d else null
---
{
    noLeap: validDate('2019/02/29'),    
    valid: validDate('2019/02/28'),
    invalid: validDate('2019/04/31')
}

输出:

{
  "noLeap": null,
  "valid": "2019/02/28",
  "invalid": null
}