关于html5:是否需要浏览器检测日期时间输入的用户时区?

Is browser required to detect user timezone for datetime input?

我安装了Opera浏览器,因为它是目前唯一拥有HTML5 datetime日历功能的浏览器。有两种类型的datetime输入:一种是datetime-local,其中省略了时区信息;另一个是datetime本身,其中添加了时区信息。

根据我在Opera中观察到的,时区固定为UTC而不是跟随用户的datetime输入时区。这似乎违反直觉,因为用户通常不知道什么是UTC时间,更不用说根据他自己的时区计算正确的UTC时间。

W3C是否需要UTC作为datetime输入的默认时区,或者Opera浏览器是否通过将时区固定为UTC来做正确的事情?

经过进一步研究,我发现这是:

whatwg似乎暗示了相反的方式:

  • 日期时间(特定年份,月份,日期,时间)
  • datetime-local(特定年份,月份,日期,时间,时区)

Mozilla文档说明了这一点:

  • datetime:HTML5用于根据UTC时区输入日期和时间(小时,分钟,秒和小数秒)的控件。

W3C提出以下建议:

  • 用户代理不得允许用户将值设置为非空字符串,该字符串不是以UTC表示的有效全局日期和时间字符串,尽管用户代理可以允许用户在另一个时区中静默设置和查看时间在值中转换UTC时区的时间。如果用户代理提供用于选择全局日期和时间的用户界面,则该值必须设置为以UTC表示的有效全局日期和时间字符串,表示用户的选择。

  • 向用户显示的格式独立于用于表单提交的格式。鼓励浏览器使用根据用户首选语言环境的约定显示日期和时间的用户界面。

在我看来,W3C允许datetime输入采用本地格式,但要求表单提交的最终值以UTC格式表示。


你问的唯一问题是:

Does W3C requires UTC to be the default timezone for datetime input, or is Opera browser doing the right thing by fixing timezone as UTC?

但正如你指出的那样:

user agents may allow the user to set and view the time in another time zone

所以你的问题的答案是W3C不需要UTC作为输入,但确实允许它,因此Opera将以正确的方式做任何事情。

这些模糊的规范非常愚蠢。 实际上,它们相当适得其反。 我不明白为什么他们甚至不打算如果他们不打算实际定义所需的行为。