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

JavaScript如何实现指定日期与分钟数相加得到正确结果

问题原因

你现在的代码直接拿两个输入框取到的字符串做+运算,本质是执行字符串拼接,根本不是时间数值计算,肯定出不了正确结果。

实现逻辑
  • 把拿到的起始时间字符串转成JS原生的Date对象,拿到可参与运算的时间戳
  • 把输入的累加分钟数转成数字类型,按1分钟等于60000毫秒的换算关系,和起始时间戳相加
  • 把相加后得到的新时间,格式化成YYYY-MM-DD HH:mm:ss的字符串格式,就是要的最终结果
修正后代码
<!-- 提前引入jQuery依赖 -->

<!-- 页面输入结构示例 -->
<input type="text" id="start" value="2022-07-13 08:22:22">
<input type="text" id="process" value="50">
<button onclick="myFunction()">计算累加后时间</button>

<script>
// 数字补零工具,保证月、日、时、分、秒都是两位
function addZero(num) {
  return num < 10 ? '0' + num : num
}

function myFunction() {
  // 读取输入值
  const startStr = $("#start").val();
  const processMin = Number($("#process").val());
  // 起始时间转Date对象,横杠换斜杠是为了兼容所有浏览器的时间解析
  const startDate = new Date(startStr.replace(/-/g, '/'));
  // 时间累加:时间戳 + 分钟转成的毫秒数
  const totalStamp = startDate.getTime() + processMin * 60 * 1000;
  const totalDate = new Date(totalStamp);
  // 拼接成要求的时间格式
  const total = `${totalDate.getFullYear()}-${addZero(totalDate.getMonth()+1)}-${addZero(totalDate.getDate())} ${addZero(totalDate.getHours())}:${addZero(totalDate.getMinutes())}:${addZero(totalDate.getSeconds())}`;
  
  // 示例参数下输出为 2022-07-13 09:12:22,和预期一致
  alert(total);
}
</script>
注意点
  • 不要直接对时间字符串做算术运算,必须先转成时间戳(数字类型)再计算
  • 解析带横杠的时间字符串时,最好把横杠替换成斜杠,避免部分浏览器解析失败返回Invalid Date
  • 格式化时间的时候月、日、时、分、秒小于10的时候要补前导零,不然会出现2022-7-13 9:2:2这种不符合格式要求的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:18:14