JavaScript计算两日期天数差需先转Date对象,用时间戳相减除以86400000取整;HTML用type="date"获标准格式;须校验空值与NaN;酒店按“含入住不含离店”算住宿晚数,并实时响应校验。

直接用 JavaScript 计算两个日期之间的天数差,关键在于把日期字符串转为 Date 对象,再用时间戳相减除以 86400000(一天的毫秒数),最后取整。
确保日期格式正确
HTML 表单中推荐使用 type="date",浏览器会自动提供日期选择器,并返回标准格式(如 2025-04-10),无需手动解析年月日:
<input type="date" id="checkin"><br><input type="date" id="checkout">
获取并转换日期值
JavaScript 中需检查值是否为空,再构造 Date 对象。注意:Date 构造函数可直接接受 "YYYY-MM-DD" 字符串,且默认为本地时间零点:
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
- 不要用 new Date("2025/04/10") 这种斜杠格式,部分浏览器可能解析为 UTC 时间导致偏差
- 用
new Date(document.getElementById("checkin").value)安全可靠 - 若用户未选日期,
.value为空字符串,需提前判断避免 NaN
计算天数差(含入住不含离店)
酒店行业惯例是:入住日算第 1 天,离店日不计入住宿天数。例如 4 月 10 日入住、4 月 13 日离店 → 住 3 晚(10、11、12 日):
const checkin = new Date(document.getElementById("checkin").value);<br>const checkout = new Date(document.getElementById("checkout").value);<br><br>if (checkin && checkout && !isNaN(checkin) && !isNaN(checkout)) {<br> const diffTime = checkout.getTime() - checkin.getTime();<br> const nights = Math.floor(diffTime / (1000 * 60 * 60 * 24));<br> console.log(nights + " 晚"); // 输出 3<br>}
添加实时响应与校验
绑定 input 或 change 事件,让用户修改任一日期时立即更新天数显示,并提示合理范围:
- 离店日期不能早于入住日期 —— 可禁用提交或标红提示
- 最少入住 1 晚 —— 若差值为 0,可默认设为 1 或提示“至少住 1 晚”
- 建议在页面加一个只读字段显示:
<output id="nights">0</output> 晚
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










