如何使用JavaScript获取当前周的所有日期
获取当前周的完整日期列表(含跨月场景)
嗨,这个需求其实挺常见的,不管你用Python还是JavaScript,都能轻松搞定,刚好能处理你说的月底跨到下个月1号的情况。我给你详细说下思路和代码示例:
核心思路
首先得明确:咱们要以周日作为一周的第一天,先算出本周周日的日期,然后从这天开始往后数6天,就能得到整周的7个日期。关键是要自动处理跨月的情况,不用手动算月份,语言自带的日期模块都能搞定这个。
Python实现方案
用Python的datetime模块就够了,代码注释我写得很清楚,你一看就懂:
from datetime import datetime, timedelta # 这里可以直接用datetime.today()获取真实的当前日期,我先模拟你说的29号周三 today = datetime(2024, 10, 29) # 计算本周的起始日期(周日):周三往前推3天就是周日,这里用公式自动计算,不用手动改数字 # weekday()返回0=周一,6=周日,所以(today.weekday() + 1) %7就是需要往前推的天数 start_of_week = today - timedelta(days=(today.weekday() + 1) % 7) # 生成整周7天的日期列表 week_dates = [start_of_week + timedelta(days=i) for i in range(7)] # 定义星期几的显示顺序(因为我们从周日开始) weekday_labels = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"] # 格式化输出,把今天的日期加粗 formatted_dates = [] for idx, date in enumerate(week_dates): day_info = f"{date.day} {weekday_labels[idx]}" if date.date() == today.date(): formatted_dates.append(f"*{day_info}*") else: formatted_dates.append(day_info) # 打印结果 for item in formatted_dates: print(item)
运行这段代码,输出就是你想要的:
26 周日
27 周一
28 周二
29 周三
30 周四
31 周五
1 周六
JavaScript实现方案
如果是前端场景,用JS也一样简单,注意JS的月份是从0开始的哦:
// 模拟今天是2024年10月29日周三(JS月份0=1月,所以10月写9) const today = new Date(2024, 9, 29); // 计算本周日的日期:getDay()返回0=周日,3=周三,所以减去3天就是周日 const startOfWeek = new Date(today); startOfWeek.setDate(today.getDate() - today.getDay()); const weekdayLabels = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]; const formattedDates = []; for (let i = 0; i < 7; i++) { const currentDate = new Date(startOfWeek); currentDate.setDate(startOfWeek.getDate() + i); const dayInfo = `${currentDate.getDate()} ${weekdayLabels[i]}`; // 对比日期是否是今天 if (currentDate.toDateString() === today.toDateString()) { formattedDates.push(`*${dayInfo}*`); } else { formattedDates.push(dayInfo); } } // 输出结果 formattedDates.forEach(item => console.log(item));
这段JS代码运行后也会得到完全一样的结果,跨月的情况(比如10月31号之后自动到11月1号)根本不用你操心,Date对象会自动处理。
关键点提醒
不管用哪种语言,核心都是先找到本周的起始点(周日),然后遍历7天生成日期。这样不管今天是周几、是不是月底,都能准确生成整周的日期列表。
内容的提问来源于stack exchange,提问作者Eclipsu
相关产品推荐
相关产品推荐

