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

JavaScript实现选择日期后自动计算对应日历周并填充输入框

日期选择自动填充对应日历周实现方案

你现有的HTML结构可以直接复用,补充JavaScript事件监听和通用周数计算逻辑即可实现需求。

现有基础HTML代码

<input type="date" name="date" id="date"><br>
<input type="text" name="cw" id="calendarweek">

可选优化:给日历周输入框加readonly属性,避免用户手动修改自动生成的周数

完整JavaScript实现代码

/**
 * 计算传入日期对应的ISO标准日历周
 * @param {Date} date 目标日期对象
 * @returns {number} 日历周数
 */
function getCalendarWeek(date) {
  // 复制日期对象,避免计算过程修改原始日期
  const calcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
  // ISO周规则:周一为每周第一天,每年第一个周四所在的周为第1周
  const dayOfWeek = calcDate.getUTCDay() || 7;
  calcDate.setUTCDate(calcDate.getUTCDate() + 4 - dayOfWeek);
  const yearStart = new Date(Date.UTC(calcDate.getUTCFullYear(), 0, 1));
  return Math.ceil((((calcDate - yearStart) / 86400000) + 1) / 7);
}

// 获取DOM元素
const datePicker = document.getElementById('date');
const weekInput = document.getElementById('calendarweek');

// 监听日期选择变化
datePicker.addEventListener('change', () => {
  // 未选择日期时清空周数输入框
  if (!datePicker.value) {
    weekInput.value = '';
    return;
  }
  // 解析选中的日期,计算对应周数
  const selectedDate = new Date(datePicker.value);
  const weekNum = getCalendarWeek(selectedDate);
  // 填充结果,可根据需要调整显示格式,比如只显示数字、加年份等
  weekInput.value = `CW ${weekNum}`;
});

说明

  • 上述周数计算遵循ISO 8601通用标准,以周一为周起始,每年第一个周四所在周为第1周,适配绝大多数地区的日历周规则。如果需要适配周日为周起始的规则,只需调整getCalendarWeek函数内的偏移计算逻辑即可。
  • 代码没有写死当前日期,只要传入用户选中的日期对象就能返回对应周数,解决只能获取当前日期周数的问题。
  • 如果日期输入框有默认初始值,可以在页面加载完成后手动触发一次change事件,或者直接调用一次计算逻辑,让周数在页面打开时就自动填充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:30:43