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

如何实现输入课程日期后计算并显示剩余天数?

解决方案

下面是完整的可运行代码,能实现你需要的功能,同时处理了无效输入、日期已过期等边界情况:

function calculateRemainingDays(startDateStr) {
  // 转换用户输入为日期对象,统一重置为UTC零点避免时区偏差
  const startDate = new Date(startDateStr);
  const today = new Date();
  today.setUTCHours(0, 0, 0, 0);
  startDate.setUTCHours(0, 0, 0, 0);

  // 校验输入日期是否有效
  if (isNaN(startDate.getTime())) {
    return "请输入有效的日期(格式如:2022-09-05)";
  }

  // 计算毫秒级时间差,转换为天数
  const timeDifference = startDate.getTime() - today.getTime();
  const daysLeft = Math.ceil(timeDifference / (1000 * 60 * 60 * 24));

  // 根据不同情况返回对应提示
  if (daysLeft < 0) {
    return `课程已经开始${Math.abs(daysLeft)}天了`;
  } else if (daysLeft === 0) {
    return "课程今天开始!";
  } else {
    return `距离课程开始还有${daysLeft}天`;
  }
}

// 交互流程
const courseStartDate = prompt("课程何时开始?");
const result = calculateRemainingDays(courseStartDate);
console.log(result);

关键细节说明:

  • 时区处理:通过setUTCHours把两个日期都重置为当天零点,避免因为本地时区或者当天的时间(比如现在是下午,而课程日期是当天上午)导致天数计算出错。
  • 无效输入拦截:用isNaN(startDate.getTime())判断输入是否是合法日期,彻底解决你之前遇到的NaN问题。
  • 场景覆盖:不仅支持未来日期,还处理了课程已过期、当天开课的情况,提示信息更贴合实际。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:54:22