Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 某些浏览器中日期无效的getDay()错误_Javascript_Jquery_Air - Fatal编程技术网

Javascript 某些浏览器中日期无效的getDay()错误

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之前,没有解析日期的标准方式

我有以下字符串:“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之前,没有解析日期的标准方式(每个主机都实现了自己的解析方式)。从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,您可以使用正则表达式或子字符串作为示例。