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

Java输入mm/dd/yyyy格式日期计算星期结果早1天问题排查

修复方案

核心错误点

  • 存在无效冗余计算:calculateDays方法中针对leapYear的3行计算逻辑完全错误,你定义的leapYear是年份前两位,这段逻辑无实际意义,直接导致总天数计算出现固定偏移
  • 余数匹配偏移1位:当前总天数模7得到的余数,比实际星期对应的正确余数小1,因此所有结果都早1天
  • 原有闰年判断逻辑不完整,未覆盖整百年判断规则,存在偶发误差隐患

具体修改操作

  1. 直接删除calculateDays方法中以下3行无效代码:
days -= leapYear;
if(leapYear%4 == 0){
  days += (int)(leapYear/4);
}
  1. 修正星期匹配偏移:将output方法中的remainder = days % 7;修改为:
remainder = (days + 1) % 7;
  1. (可选优化,避免整百年计算错误)替换原有闰年计算逻辑,补全完整闰年规则:
boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
if (isLeapYear && month <= 2) {
    days += (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400;
} else {
    days += year / 4 - year / 100 + year / 400;
}

修改完成后即可得到正确的星期结果,可任意输入日期验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 22:45:03