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

如何将2021-W46类周字符串转为ColdFusion日期函数可识别的周一日期

ColdFusion处理ISO周日期(yyyy-Wxx)转换为当周周一的实现方案

实现逻辑

  • 你使用的2021-W46属于ISO 8601标准周格式,ColdFusion原生parseDateTime、dateFormat函数默认不支持该格式,需手动拆分字段后按ISO周规则计算日期
  • ISO周核心规则:以周一为一周起始,每年1月4日固定属于当年的第1周,以此为基准计算可避免跨年周的边界错误

可直接运行的实现代码

// 输入示例
inputWeekStr = "2021-W46";
// 正则拆分年份和周数
matchResult = reMatch("^(\d{4})-W(\d{1,2})$", inputWeekStr);
if(arrayLen(matchResult) == 0){
    throw(message: "输入周日期格式不符合yyyy-Wxx规范");
}
yearPart = matchResult[1].group(1);
weekPart = matchResult[1].group(2);
// 取当年1月4日作为基准(固定属于当年ISO第1周)
baseDate = createDate(yearPart, 1, 4);
// 计算1月4日到当周周一的偏移量:ColdFusion的dayOfWeek返回值1=周日、2=周一...7=周六
weekDayOffset = (dayOfWeek(baseDate) + 5) % 7;
firstWeekMonday = dateAdd("d", -weekDayOffset, baseDate);
// 加(目标周数-1)*7天得到目标周的周一
targetMonday = dateAdd("d", (weekPart - 1) * 7, firstWeekMonday);

// 输出验证,targetMonday为原生日期对象,可直接传入parseDateTime、dateFormat处理
writeOutput(dateFormat(targetMonday, "yyyy-mm-dd"));

结果验证

输入2021-W46时上述代码输出为2021-11-15,对应2021年第46周的周一,计算结果符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:54:05