传递给date构造函数的Javascript日期字符串给出了奇怪的结果
Javascript date string passed to Date constructor gives strange results
为什么在创建新日期时,使用类似格式的日期字符串会得到如此不同的结果?
CHROME(43.0.2357.134 m)控制台:
<>之前新日期(2014 - <我>目前消费量 我> ')星期三Dec 24 2014 17:00:00 GMT-0700(山区标准时间)[Chrome假定Z为00:00 (utc)并返回该本地时间]新日期(2014 - <我> 1 - 25 我> ')Sat Jan 25 2014 00:00:00 GMT-0700(山区标准时间)(什么? !完全相同的格式(我认为),但返回25而不是24....看到未来…]新日期(2014 - <我> 01-25 我> ')星期五Jan 24 2014 17:00:00 GMT-0700(山区标准时间)[…哦,前导0使它使用第一个示例中使用的逻辑]新日期("2014/12/25")星期四Dec 25 2014 00:00:00 GMT-0700(山区标准时间)[使用/代替-,得到我相信大多数人会期望的结果(?):当地时间在指定的同一日期]之前FIREFOX (39.0) console:
<>之前新日期("2014-12-25")2014 - 12 - 25 t00:00:00.000z日期[不同于Chrome]新日期("2014-1-25")无效的日期[与Chrome不同,Firefox无法识别]新日期("2014-01-25")2014 - 01 - 25 - t00:00:00.000z日期[不同于Chrome]新日期("2014/12/25")2014 - 12 - 25 t07:00:00.000z日期教训似乎是:如果 您将在Date构造函数中使用字符串,请确保其格式正确(根据ECMAScript标准):
YYYY-MM-DDTHH:mm:ss.sssZ
CHROME: <>之前新日期(2014 - 12 - 25 - t00:00:00.000 07:00)2014年12月25日星期四00:00:00 GMT-0700(山区标准时间)之前FIREFOX: <>之前新日期(2014 - 12 - 25 - t00:00:00.000 07:00)2014 - 12 - 25 t07:00:00.000z日期之前
ECMAScript标准在15.9.3.2
If Type(v) is String, then
Parse v as a date, in exactly the same manner as for the parse method (15.9.4.2);
在15.9.4.2中它说:
<>之前该函数首先尝试解析字符串的格式在日期时间字符串格式(15.9.1.15)中调用的规则。<我>字符串不符合这种格式我>函数可以返回到any特定于实现的启发式或特定于实现的日期格式。之前…这对我来说,如果你不提供准确的格式,Chrome和Firefox以及其他所有人都可以按照他们认为正确的方式解释日期字符串。(注意:在格式上有一些余地,例如,不存在的SSS字段的值为"000"。
相关文章:
- Regex模式匹配,从Javascript中的字符串中提取时间,结果出乎意料
- 将敲除绑定应用于模板,并将结果作为字符串获取
- 将Javascript Regex结果转换为字符串(?)
- Geoplugin字符串结果为德语单词/语言
- Javascript:拆分字符串,但仅使用 1 个结果
- 解析JSON字符串返回未定义的结果
- 在谷歌地图API自动完成中显示不匹配字符串的结果
- 将字符串结果返回到表单元格中的新行中
- mongodb-mongoose-find-如何获得适用的字符串作为结果
- 自定义查询字符串分析器返回不正确的结果
- 如何从数据库中获取JSON字符串结果以供以后使用
- 使用$se.trustAsHtml呈现字符串返回未定义的结果
- 调用.ajax方法得到未定义的json结果,返回json格式列表<字符串>
- 如何获取控制台.log输出 getter 结果而不是字符串“[Getter/Setter]”
- getElementById 给出结果和字符串
- 在 JavaScript 中解析日期字符串的意外结果
- Javascript PHP 字符串未返回所需的结果
- 正则表达式 - 替换方法从字符串中删除运算符产生不希望的结果
- 如何在javascript代码中获取console.log的结果字符串
- 将$get结果字符串转换为javascript数组