You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataWeave如何使用dw::core::Dates函数创建月/日为1-9的合法日期

背景

根据DataWeave官方文档对date(..)函数的说明,传入year、month、day三个参数即可创建Date类型数据:

输入示例:

%dw 2.0
import * from dw::core::Dates
output application/json
---
{
   newDate: date({year: 2012, month: 10, day: 11})
}

输出示例:

{
   "newDate": "2012-10-11"
}
问题描述

当传入的month或day值为1到9之间的数字时,会触发日期格式不合法的报错。
多数用户首次遇到该问题时会推测是DataWeave未对1-9的数字自动补前导0,导致生成的日期不符合ISO8601标准yyyy-MM-dd格式要求。但尝试传入补了前导0的字符串01作为参数,又会触发函数要求传入数字类型的报错。

解决方案

dw::core::Dates下的date()函数原生支持接收1-9范围内的数字作为月、日参数,无需手动补前导0,函数内部处理时会自动适配ISO8601格式要求,正确写法如下:

%dw 2.0
import * from dw::core::Dates
output application/json
---
{
   // 直接传入1和5作为月、日参数即可
   newDate: date({year: 2023, month: 1, day: 5})
}

上述代码的输出结果为:

{
   "newDate": "2023-01-05"
}

如果你确实遇到了报错,大概率是你没有直接使用date()函数传入对象参数,而是采用了字符串拼接再转日期的错误写法,例如:

// 错误写法:手动拼接字符串时没有补前导0,导致转换失败
date("2023-" ++ 1 ++ "-" ++ 5 as String)

这种场景可以使用as运算符指定日期格式适配无前导0的输入:

// 适配无前导0的字符串输入转Date
"2023-1-5" as Date {format: "yyyy-M-d"}

内容的提问来源于stack exchange,提问作者Doug Ayers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:24:03