查看: 110|回复: 1

HTML5 Input日期选择器实践:date/week/month/time及datetime-local用法

[复制链接]
发表于 4 小时前 | 显示全部楼层 |阅读模式
HTML5 引入了一系列原生日期时间输入类型,无需依赖第三方日历插件即可实现日期选择功能。本文详解 <input> 元素提供的 date、week、month、time、datetime(已废弃)及 datetime-local 类型,并给出一个可运行的 datetime-local 示例代码。

## 日期时间输入类型概览

1. **date**(<input type="date" />)  
   最基本的日期选择器,用户只能从日历中选择某个具体日期,格式通常为 yyyy-MM-dd。

2. **week**(<input type="week" />)  
   选择的是某一周,而非具体日期。显示方式为“年-W周数”,例如 2025-W14。

3. **month**(<input type="month" />)  
   选择月份,格式为 yyyy-MM,不包含日信息。

4. **time**(<input type="time" />)  
   仅选择时间(小时和分钟),无日历组件,格式 HH:mm(或包含秒,视浏览器而定)。

5. **datetime**(<input type="datetime" />)  
   同时显示日期和时间选择器,但该类型已在 Chrome 中失效,属于已废弃特性。官方推荐使用 datetime-local 替代。

6. **datetime-local**(<input type="datetime-local" />)  
   是 datetime 的现代替代方案,支持选择本地日期和时间,格式为 yyyy-MM-ddTHH:mm。

## 使用 datetime-local 编写日期选择器

以下示例演示如何用 datetime-local 创建一个带默认值的日期时间选择框,并在页面加载时自动填充当前时间。使用了 jQuery 库简化 DOM 操作。
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>datetime-local 示例</title>
  7. </head>
  8. <body>
  9.     <label>
  10.         <span>选择日期</span>
  11.         <input type="datetime-local" class="measureDate" placeholder="请选择日期">
  12.     </label>
  13.     <script src="https://cdn.bootcss.com/jquery/3.5.0/jquery.js"></script>
  14.     <script type="text/javascript">
  15.         let date = new Date();
  16.         let yyyy = date.getFullYear();
  17.         let MM = (date.getMonth() + 1) < 10 ? ("0" + (date.getMonth() + 1)) : (date.getMonth() + 1);
  18.         let dd = date.getDate() < 10 ? ("0" + date.getDate()) : date.getDate();
  19.         let HH = date.getHours() < 10 ? ("0" + date.getHours()) : date.getHours();
  20.         let mm = date.getMinutes() < 10 ? ("0" + date.getMinutes()) : date.getMinutes();
  21.         let curDay = yyyy + '-' + MM + '-' + dd + 'T' + HH + ':' + mm;
  22.         $('.measureDate').val(curDay);
  23.         console.log(date);
  24.     </script>
  25. </body>
  26. </html>
复制代码

### 代码解析

- 使用 `new Date()` 获取浏览器当前本地时间。
- 分别提取年、月、日、时、分,并通过三元运算符补零,确保月份、日期、小时、分钟始终为两位数(例如 03 而不是 3)。
- 拼接字符串时,月、日、时、分之间用连字符和冒号分隔,日期和时间之间用大写字母 T 连接,这是 datetime-local 所要求的 ISO 格式:`yyyy-MM-ddTHH:mm`。
- 通过 jQuery 选择器 `$('.measureDate')` 找到 `<input>` 元素,调用 `.val(curDay)` 设置其值为当前时间。

### 注意事项

- `datetime-local` 在移动端浏览器中会自动唤起设备原生日历和时间选择器,用户体验良好。
- 旧版浏览器可能不支持该类型,届时会退化为普通文本输入框,可结合 polyfill 或 Modernizr 进行降级处理。
- 获取用户选择的值时,可以通过 JavaScript 读取 `input.value`,得到的字符串格式与设置时一致(如 "2025-04-12T14:30")。

通过以上代码,开发者可以快速为表单添加原生日期时间选择功能,无需引入额外依赖库。
回复

使用道具 举报

发表于 4 小时前 | 显示全部楼层

Re: HTML5 Input日期选择器实践:date/week/month/time及datetime-local用法

非常实用的分享!HTML5原生日期选择器确实能省去引入第三方库的麻烦,尤其在移动端体验很流畅。你用三元运算符补零的写法也很清晰,初学者容易理解。另外补充一点:datetime-local的值在提交表单时是本地时间字符串,处理时区要留意,后端最好统一转成UTC存储。感谢教程,收藏了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-10 19:15 , Processed in 0.028485 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部