我正在处理需要处理大量“日期”的项目。我注意到,有时的JavaScript在不同浏览器的行为不同:javascript在不同浏览器中的行为有所不同
代码:
new Date("Mar 30, 2017".replace(',', '').replace(/ /g, '/'))
我知道我并不需要使用replace
创建日期,但是这个代码给我从Chrome和Safari有趣的不同结果。
当我运行:
"Mar 30, 2017".replace(',', '').replace(/ /g, '/')
Chrome和Safari浏览器会带给我:"Mar/30/2017"
。但是,当我试图把结果变成Date
对象,有趣的结果将是:
Chrome: Thu Mar 30 2017 00:00:00 GMT-0700 (PDT)
Firefox: Date 2017-03-30T07:00:00.000Z
Safari: Invalid Date
我已经检查这两个浏览器Javascript的版本,它们都使用相同的版本(1.7)。任何人都可以解释为什么Chrome在这方面的行为与Safari不同?
UPDATE 我知道"Mar/30/2017"
不是有效的日期格式。但我的问题是为什么JavaScript在不同的浏览器中表现不同。对于抱怨我日期格式的答案。请在回答之前阅读问题。我会采取@Felix Kling的回答,并感谢所有的答案。
是的,如果您将非标准日期格式传递给'new Date()',那么您会得到不同的结果。只传递[标准格式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)或者尽可能避免传递字符串。 – JJJ
Safari的JS实现可能只是无法理解它,为什么你需要创建一个日期为“2017年3月/ 30”第一种方式应该工作正常[W3日期文档](https://www.w3schools.com /jsref/jsref_obj_date.asp) –
那么,因为'“Mar/30/2017”'根据我所知的任何规范都不是有效的日期格式。浏览器可以以任何他们想要的方式解释它,或者根本不用,正如你在这里可以观察到的那样。 – Timo