【问题标题】:Is browser required to detect user timezone for datetime input?浏览器是否需要检测用户时区以进行日期时间输入?
【发布时间】:2012-06-17 02:09:21
【问题描述】:

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

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

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

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

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

  • 日期时间(具体年、月、日、时间)
  • 本地日期时间(特定年、月、日、时间、时区)

Mozilla documentation 这么说:

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

W3C 提出以下建议:

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

  • 向用户显示的格式与用于表单提交的格式无关。鼓励浏览器使用根据用户首选区域设置的约定来显示日期和时间的用户界面。

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

【问题讨论】:

    标签: html datetime browser timezone utc


    【解决方案1】:

    您提出的唯一问题是:

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

    但正如你所指出的:

    用户代理可能允许用户设置和查看另一个时区的时间

    因此,您的问题的答案是 W3C 不要求 UTC 输入,但 允许 它,所以无论哪种方式,Opera 都会做正确的事情。

    这些模棱两可的规格非常愚蠢。实际上,它们适得其反。我不明白如果他们不打算真正定义所需的行为,他们为什么还要打扰。

    【讨论】:

    • 谢谢,我也是这么想的。希望 W3C 可以修改他们的规范,让 datetime 输入在其他浏览器开始模仿 Opera 之前更有用。
    猜你喜欢
    • 2020-08-14
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2011-04-16
    • 2019-10-29
    • 2014-01-29
    相关资源
    最近更新 更多