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

如何在JavaScript中将日期设置为当年的第一个星期五

获取当年第一个星期五的正确实现

你的代码存在逻辑问题:while循环只是修改了weekday变量的值,并没有实际调整日期;最后直接给firstDay的日期加6也不符合需求——比如如果当年1月1日是周一,第一个周五应该是1+4=5号,而非7号。

下面是正确的实现方式:

// 获取当前年份
const currentYear = new Date().getFullYear();
// 创建当年1月1日的日期对象(JavaScript月份从0开始,0代表1月)
const firstDayOfYear = new Date(currentYear, 0, 1);
// 获取1月1日的星期数(0=周日,1=周一...5=周五,6=周六)
const weekday = firstDayOfYear.getDay();

let daysToAdd;
if (weekday === 5) {
  // 1月1日本身就是周五,无需追加天数
  daysToAdd = 0;
} else if (weekday === 6) {
  // 1月1日是周六,需要加6天到下周五
  daysToAdd = 6;
} else {
  // 周日到周四,直接计算到周五的天数差
  daysToAdd = 5 - weekday;
}

// 计算第一个周五的日期
const firstFriday = new Date(firstDayOfYear);
firstFriday.setDate(firstDayOfYear.getDate() + daysToAdd);

// 输出结果,可根据需求选择日期格式
console.log(firstFriday.toUTCString());

代码说明:

  • 用new Date(currentYear, 0, 1)准确创建当年1月1日的日期对象,避免字符串拼接带来的兼容问题。
  • 通过判断1月1日的星期数,精准计算需要追加的天数,确保结果是当年第一个周五。
  • 单独创建firstFriday对象,避免修改原有的firstDayOfYear日期对象,保持数据独立性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:10:32