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

如何不使用new Date()判断当月或指定月1号的星期几

问题解答

问题2:已知某日期的星期,求当月1号的星期几(通用解法)

核心逻辑是利用日期差的星期偏移计算,适用于所有以周日为星期索引0的编程语言:

步骤与公式

  1. 计算目标日期与当月1号的天数差:daysDiff = 目标日期日数 - 1
  2. 计算天数差对7取余(得到周内偏移量):offset = daysDiff % 7
  3. 用已知的星期索引(周日=0,周一=1…周六=6)减去偏移量,通过+7和%7处理负数边界,得到1号的星期索引:
    firstDayWeekIndex = (已知星期索引 - offset + 7) % 7
    

实例验证(已知2024年5月18日为周六,索引6)

代入公式计算:

firstDayWeekIndex = (6 - (18-1)%7 +7) %7 = (6-3+7)%7 = 10%7 = 3

索引3对应周三,与实际日期一致,验证正确。

问题1:根据当前日期(不使用new Date())求当月1号的星期几

逻辑和问题2完全一致,只需先获取两个关键值(可通过系统环境变量、用户输入等非Date API渠道获取):

  • 当前日期的日数:currentDay
  • 当前日期的星期索引:currentWeekIndex

直接套用公式:

firstDayWeekIndex = (currentWeekIndex - (currentDay -1) %7 +7) %7

边界情况示例

  • 若当前日期就是1号:currentDay-1=0,公式结果等于currentWeekIndex,符合预期
  • 若当前是周日(索引0)、日期为2号:(0 -1 +7)%7=6,对应周六,与实际一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 16:52:41