alert(new Date(‘2010-11-29’));
chrome,ff没问题,但是Safari会喊“无效日期”。为什么呢
编辑:好的,根据下面的评论,我使用了字符串解析并尝试了以下操作:
alert(new Date('11-29-2010')); //doesn't work in safari alert(new Date('29-11-2010')); //doesn't work in safari alert(new Date('2010-29-11')); //doesn't work in safari
编辑 :似乎人们仍在这里着陆-今天,我将使用moment或date-fns完成此操作。Date-fns也非常轻巧。
moment
date-fns
该模式yyyy-MM-dd不是Date构造函数的官方支持格式。Firefox似乎支持它,但不要指望其他浏览器也这样做。
yyyy-MM-dd
Date
以下是一些受支持的字符串。
DateJS似乎是解析非标准日期格式的好库。
编辑 :引用第15.9.1.15节的内容:
日期时间字符串格式
ECMAScript基于ISO 8601扩展格式的简化,为日期时间定义了字符串交换格式。格式如下:YYYY-MM- DDTHH:mm:ss.sssZ其中字段如下: YYYY是公历中年份的十进制数字。 “-”(连音)在字符串中实际出现两次。 MM是从01(一月)到12(十二月)的一年中的月份。 DD是当月的一天,从01到31。 “ T”字面上出现在字符串中,以指示时间元素的开始。 HH是自午夜以来已过去的完整小时数,以两位十进制数字表示。 “:”(冒号)在字符串中实际出现两次。 mm是从小时开始算起的完整分钟数,以两位十进制数字表示。 ss是从分钟开始算起的完整秒数,以两位十进制数字表示。 “。” (点)字面上出现在字符串中。 sss是自秒数开始以来的完整毫秒数,为三个十进制数字。这俩 ”。” 毫秒字段可以省略。 Z是时区偏移量,指定为“ Z”(对于UTC)或“ +”或“-”,后跟时间表达式hh:mm 此格式包括仅日期形式: YYYY YYYY-MM YYYY-MM-DD 它还包括仅时间形式,并附加了可选的时区偏移量: 高度:mm 高度:毫米 THH:mm:ss.sss 还包括“日期时间”,它可以是上述的任何组合。
ECMAScript基于ISO 8601扩展格式的简化,为日期时间定义了字符串交换格式。格式如下:YYYY-MM- DDTHH:mm:ss.sssZ其中字段如下:
此格式包括仅日期形式:
它还包括仅时间形式,并附加了可选的时区偏移量:
还包括“日期时间”,它可以是上述的任何组合。
因此,似乎YYYY-MM-DD已包含在标准中,但由于某些原因,Safari不支持它。
更新 :查看datejs文档后,使用它,应使用类似以下代码的方法解决您的问题:
var myDate1 = Date.parseExact("29-11-2010", "dd-MM-yyyy"); var myDate2 = Date.parseExact("11-29-2010", "MM-dd-yyyy"); var myDate3 = Date.parseExact("2010-11-29", "yyyy-MM-dd"); var myDate4 = Date.parseExact("2010-29-11", "yyyy-dd-MM");