Javascript 某些浏览器中日期无效的getDay()错误
我有以下字符串:“2012-12-10T23:40:41Z” 我的目标是把这一天作为一个数字(0-6)。。。太阳坐 我按如下方式传递此字符串:Javascript 某些浏览器中日期无效的getDay()错误,javascript,jquery,air,Javascript,Jquery,Air,我有以下字符串:“2012-12-10T23:40:41Z” 我的目标是把这一天作为一个数字(0-6)。。。太阳坐 我按如下方式传递此字符串: var input = "2012-12-10T23:40:41Z"; var day = new Date(input).getDay(); alert(day); 这在Chrome中运行良好,但在AdobeAIR webkit视图中,它会出现“无效日期”错误 有没有关于找到一种方式来获取旧浏览器支持的日期的建议?在ES5之前,没有解析日期的标准方式
var input = "2012-12-10T23:40:41Z";
var day = new Date(input).getDay();
alert(day);
这在Chrome中运行良好,但在AdobeAIR webkit视图中,它会出现“无效日期”错误
有没有关于找到一种方式来获取旧浏览器支持的日期的建议?在ES5之前,没有解析日期的标准方式(每个主机都实现了自己的解析方式)。从ES5开始,日期必须采用ISO8601格式,才能在严格模式下解析
为了实现最大的可移植性,您应该手动解析日期。在ES5之前,没有解析日期的标准方法(每个主机都实现了自己的解析方法)。从ES5开始,日期必须采用ISO8601格式,才能在严格模式下解析 为了实现最大的可移植性,您应该手动解析日期。这应该会有帮助,即使它有点旧。问题是ISO 8601样式的日期仅在Javascript 1.8.5中得到支持。这应该是有帮助的,尽管它有点旧。问题是ISO 8601样式的日期仅在Javascript 1.8.5中得到支持。更多评论 若要手动解析,请将其拆分为多个部分,并将其传递给日期构造函数。请注意,javascript日期字符串应始终为UTC(Z),因此: 如果愿意,您可以向上面添加bell和whistles来验证字符串和结果日期对象 请注意,根据ES5,提供给(例如2012-12-00)的无效日期字符串应返回
NaN
,但某些浏览器将为2012-11-30创建日期对象。上述操作将返回无效字符串的日期对象,因此如果需要与规范保持一致:
function parseISOdateString(s) {
s = s.split(/\D/);
var d = new Date(Date.UTC(s[0], --s[1], s[2], s[3], s[4], s[5]))
return (d.getUTCFullYear() == s[0] && d.getUTCDate() == s[2])? d : NaN;
}
对于像“2012-12-00”这样的无效字符串,它将返回NaN
更多的注释
若要手动解析,请将其拆分为多个部分,并将其传递给日期构造函数。请注意,javascript日期字符串应始终为UTC(Z),因此:
如果愿意,您可以向上面添加bell和whistles来验证字符串和结果日期对象
请注意,根据ES5,提供给(例如2012-12-00)的无效日期字符串应返回NaN
,但某些浏览器将为2012-11-30创建日期对象。上述操作将返回无效字符串的日期对象,因此如果需要与规范保持一致:
function parseISOdateString(s) {
s = s.split(/\D/);
var d = new Date(Date.UTC(s[0], --s[1], s[2], s[3], s[4], s[5]))
return (d.getUTCFullYear() == s[0] && d.getUTCDate() == s[2])? d : NaN;
}
这将返回
NaN
对于无效字符串,如“2012-12-00”@RachelDRoy,您可以使用正则表达式或子字符串作为示例。@RachelDRoy,您可以使用正则表达式或子字符串作为示例。