gpt4 book ai didi

javascript - "2011-01-27T04:59:00Z"形式的日期字符串——有些浏览器接受它们,有些则不接受。为什么?

转载 作者:行者123 更新时间:2023-11-29 10:53:44 25 4
gpt4 key购买 nike

我从 Web 服务调用中获取格式为 "2011-01-27T04:59:00Z" 的日期字符串。 Firefox 和 Chrome 使用 var d = new Date("2011-01-27T04:59:00Z") 解析字符串没有问题,但 Safari 和 IE 不会支持它。

我可以自己解析字符串并将其提供给 Date.parse()Date.UTC(),但我想知道为什么 (1) 这样的浏览器之间存在差异,比如 Date 对象这样基本的东西,以及 (2) 为什么公共(public) API 会以 Safari 和(尤其是)IE 拒绝的格式返回日期字符串。

最佳答案

对于你的两个问题,我会说

  1. 这是第一次浏览器大战前的遗物。ECMAScript 规范写得不好,浏览器支持他们(不)想要的任何东西。
  2. 它是 ISO 8601 格式,是在 Javascript Date 对象之后发明的。即使在 php 中,它也是在 php 5.0 之后添加的。日期对象是采用 RFC 2822 格式的原始设计。

每条评论的更正:

  1. Date.prototype.parse 的引入没有说明它应支持的日期格式的规范。即使它在 ECMAScript 3 中被标准化, 该规范没有定义它应该支持的日期格式。 2009年12月,ECMAScript 5定义 Date 应该支持问题中指定的 ISO 8601 格式,但对于发布的版本,在撰写本文时,只有 Gecko/Firefox 实现了该功能。 (Webkit 已在我的测试中的夜间版本中实现)
  2. 由于未知原因,尽管 ISO 8601 是在 1988 年编写的,但直到最近网络协议(protocol)/编程语言才开始支持该格式。 PHP 5 以后才支持date() 函数中的格式。在互联网初期,协议(protocol)采用RFC 822/2822 格式来获取时间,这种格式对于英文用户来说是人类可读的。
  3. 在我看来,如果 API 仅供机器使用,则应该使用 Unix 时间来描述时间。

关于javascript - "2011-01-27T04:59:00Z"形式的日期字符串——有些浏览器接受它们,有些则不接受。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4807317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com