type="week" 是用于采集用户声明性选择“年+周”组合的语义化输入控件,值为 ISO 格式字符串(如"2026-W18"),不支持周数计算、日期转换或自动校验,仅适用于需用户明确指定某周的场景。
的
是 HTML5 原生支持的语义化输入类型,专门用于让用户选择「某一年的第几周」,不是选日期、也不是选星期几,而是选 ISO 定义下的「年+周」组合(如
)。它不用于统计周数,也不返回数字 1–53,而是一个格式固定的字符串值。
为什么
不能直接拿来做周数统计
浏览器原生
输入框提交或读取的值形如
(ISO 格式),不是整数。你无法靠它自动算出「今天是今年第几周」或「两个日期差多少周」——它只负责采集用户明确选定的一周,不参与计算。
表单提交时,
是字符串,例如:
,后端需手动解析年份和周数
JS 读取
得到的是字符串,不是
对象,不能直接调用
或
没有内置方法把
转成日期范围(如 2026-04-27 至 2026-05-03),得自己写逻辑或依赖库
Chrome 和 Safari 支持该控件但显示为文本框 + 日历弹窗;Firefox 当前(2026)仍不支持
类型,会退化为普通文本框
输入框的正确使用场景
它适合明确需要用户「声明性选择一周」的业务,比如排班系统选「第 18 周值班」、课程表选「第 22 周教学安排」、报销系统填「费用发生于哪一周」——重点在「用户确认」而非「程序推算」。
必须配合
属性才能被表单提交,例如:
可设默认值,格式必须严格为
,如:
;写成
或
会被忽略
可用
/
限制可选范围,值也须为
格式,例如:
验证失败时(如空值或格式错误),
返回
,
会提示「请填写有效的周」
想统计周数?别用
,改用函数
真正做周数计算,应放弃
,转向 JS 或后端函数:
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
立即学习
“
前端免费学习笔记(深入)
”;
JS 中可用
提取 ISO 周数:
→
MySQL 用
(周一为始,范围 1–53)或
获取整数结果
PostgreSQL 用
,默认按周日为始;加
可适配 ISO
注意:不同数据库对「第 1 周」定义不同——有的要求该周含 1 月 4 日,有的看是否过半数日期属本年,跨年周(如 2025-12-29 是 2026-W01)最容易出错
真正容易被忽略的是:前端
输入框只是个「字符串采集器」,它不校验该周是否存在(比如
在多数年份无效),也不保证用户选的周和当前日期逻辑一致。所有业务级校验——比如「不能选未来周」「不能选已关闭的周」——都得自己在 JS 或服务端补全。
inputtype="week"2026-W18type="week"week"2026-W18"value"2026-W18"input.valuenew Date()getDay()toISOString()"2026-W18"weekweeknameYYYY-W##value="2026-W18""2026-18""18"minmaxYYYY-W##min="2026-W01" max="2026-W53"checkValidity()falsevalidationMessagetype="week"input[type=week]Intl.DateTimeFormatnew Intl.DateTimeFormat('en', {year: 'numeric', week: 'numeric'}).format(new Date())"2026-W18"WEEK(date, 3)YEARWEEK(date, 3)EXTRACT(WEEK FROM date)ISODOWweek2026-W54