You need to enable JavaScript to run this app. JavaScript获取德国时区母亲节日期(dd.mm.yyyy)及代码报错排查
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript获取德国时区母亲节日期(dd.mm.yyyy)及代码报错排查

现有代码问题说明
  • API调用错误:getDay()返回的是星期索引(0代表周日,1-6代表周一到周六),你把这个值当成当月日期输出才会出现首位为0的问题,正确获取当月天数应该用getDate();getMonth()返回月份从0开始计数(0对应1月,4对应5月),输出时需要加1才能匹配日常使用的月份数值。
  • 逻辑错误:计算5月第一个周日时,如果5月1日不是周日,你直接用new Date()创建实例,这个实例默认取当前运行时间的年月日,调用setDate修改的是当前月份的日期,完全不是当年5月的日期,自然计算结果错误。
  • 时区混用:代码同时调用了UTC系列方法(getUTCDay、getUTCDate)和本地时间方法,德国时区与UTC存在1-2小时的偏移,混用API很容易出现跨天导致的日期错误。
简化实现代码
function getGermanMothersDay(targetYear) {
    const year = targetYear || new Date().getFullYear();
    // 初始化当年5月1日
    const mayFirst = new Date(year, 4, 1);
    // 计算5月1日是周几,0为周日
    const weekDay = mayFirst.getDay();
    // 计算第一个周日的日期
    const firstSunday = weekDay === 0 ? 1 : 1 + (7 - weekDay);
    // 第二个周日为第一个周日加7天
    const motherDay = firstSunday + 7;
    // 格式化输出,不足两位补0
    const formatDay = String(motherDay).padStart(2, '0');
    return `${formatDay}.05.${year}`;
}

// 测试2021年母亲节,输出09.05.2021,符合预期
console.log(getGermanMothersDay(2021));
// 不传参数默认获取当年母亲节日期
console.log(getGermanMothersDay());

该实现统一使用本地时间API计算,去掉了多余的Date实例创建,逻辑清晰,且自动补0完全匹配dd.mm.yyyy的输出格式。如果需要严格对齐德国时区,可以把实例化部分改为对应时区的时间初始化即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 23:36:06