我安装了 Opera 浏览器,因为它是目前唯一拥有 HTML5datetime
日历功能的浏览器。有两种类型的datetime
输入:一种datetime-local
是省略时区信息的地方;另一个是datetime
添加时区信息的地方。
根据我在 Opera 中观察到的情况,时区固定为 UTC,而不是遵循用户的时区进行datetime
输入。这似乎违反直觉,因为用户通常不知道 UTC 时间是什么,更不用说根据自己的时区计算正确的 UTC 时间了。
W3C 是否要求 UTC 作为datetime
输入的默认时区,或者 Opera 浏览器是否通过将时区固定为 UTC 来做正确的事情?
经过进一步研究,这是我发现的:
whatwg似乎提出了相反的建议:
- datetime(特定年、月、日、时间)
- datetime-local(特定年、月、日、时间、时区)
Mozilla 文档是这样说的:
- datetime: HTML5 用于输入基于 UTC 时区的日期和时间(小时、分钟、秒和秒的小数部分)的控件。
W3C提出以下建议:
用户代理不得允许用户将值设置为非空字符串,该字符串不是以 UTC 表示的有效全球日期和时间字符串,尽管用户代理可能允许用户在另一个时区静默设置和查看时间在值中转换与 UTC 时区的时间。如果用户代理提供用于选择全局日期和时间的用户界面,则该值必须设置为以 UTC 表示的有效全局日期和时间字符串,表示用户的选择。
向用户显示的格式与用于表单提交的格式无关。鼓励浏览器使用根据用户首选区域设置的约定来显示日期和时间的用户界面。
在我看来,W3C 允许datetime
输入为本地格式,但要求表单提交的最终值以 UTC 格式表示。