直接为 的 value 属性赋值严格符合 YYYY-MM-DD 格式的字符串(如 "2024-06-15")即可默认显示今天;服务端推荐 toISOString().slice(0, 10),客户端避免 new Date() 直接赋值,注意时区与格式合法性。

HTML 怎么默认显示今天?
直接给 value 属性赋值为 ISO 格式日期字符串(YYYY-MM-DD)即可,浏览器会自动渲染为当天日期。注意:不能用 new Date().toString() 或带时间的格式,否则值无效,输入框变空。
-
value必须是严格符合YYYY-MM-DD的字符串,比如"2024-06-15" - 服务端生成时建议用
toISOString().slice(0, 10),避免时区偏差(new Date().toJSON()同理) - 客户端 JS 设置时别写成
input.value = new Date()—— 这会转成类似"Fri Jun 15 2024...",浏览器不认 - 如果页面加载后才动态设置,确保 DOM 已就绪,否则
input元素可能还不存在
为什么设置了 value 却没显示?常见失效原因
最常踩的坑是日期格式不合法或时区导致的“昨天/明天”错位。浏览器对 的 value 校验极严,任何非 YYYY-MM-DD 格式都会被静默丢弃。
- 后端模板里拼字符串出错,比如写成
"2024/06/15"或"15-06-2024"→ 值被忽略 - JS 中用
toLocaleDateString()生成值 → 返回语言相关格式(如"6/15/2024"),浏览器不解析 - 本地开发时系统时区为 UTC+9,但
new Date().toISOString()返回 UTC 时间 →2024-06-15T15:00:00.000Z的slice(0,10)是"2024-06-15",没问题;但如果用getUTCFullYear()等手动拼,容易漏掉补零(如6要写成"06")
需要同时设时间(datetime-local)怎么办?
默认不支持“当前时刻”,必须手动填值,且格式是 YYYY-MM-DDTHH:MM(不带秒、不带时区)。和 date 类型一样,格式错就白搭。
- 正确示例:
- JS 动态生成推荐:
new Date().toISOString().slice(0, 16)(截取到分,去掉秒和 Z) - 注意:这个控件在 Safari 上长期存在兼容问题,iOS 15.4 之前甚至不触发
change事件,生产环境慎用
用户选了日期后,怎么拿到 JavaScript 可用的 Date 对象?
输入框的 value 是字符串,不是 Date。直接传给 new Date(value) 在某些浏览器(如旧版 Safari)可能出错,因为没指定时区。
- 安全做法:
new Date(value + "T00:00")(补上时间部分,让解析明确按本地时区) - 更稳妥:
new Date(Date.parse(value)),Date.parse()能正确处理YYYY-MM-DD - 别用
new Date(value)直接构造 —— 在 Safari 中可能返回Invalid Date - 如果后续要比较或计算,务必确认时区意图:是按用户本地时间算,还是统一按 UTC?
实际项目里最容易被忽略的是时区隐含逻辑: 的值永远是“本地日历日期”,但 JS 的 Date 对象默认带时区偏移。两者混用不加转换,跨时区用户就会看到日期平移。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











