如何在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
相关产品推荐
相关产品推荐

