Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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在safari中将日期值获取为NAN_Javascript_Jquery_Date_Safari - Fatal编程技术网

使用Javascript在safari中将日期值获取为NAN

使用Javascript在safari中将日期值获取为NAN,javascript,jquery,date,safari,Javascript,Jquery,Date,Safari,我在使用Javascript比较一些日期时遇到了这个问题。我只在Safari上收到这个问题。它在Chrome上工作正常。让我先解释一下我的代码 var date='2016-05-21'; var to='2016-05-23'; var eventdate='2016-06-01 16:48:51'; function getMidnight(date) { return (new Date(new Date(date.replace(/-/g, "/")).getFullYear()

我在使用Javascript比较一些日期时遇到了这个问题。我只在Safari上收到这个问题。它在
Chrome
上工作正常。让我先解释一下我的代码

var date='2016-05-21';
var to='2016-05-23';
var eventdate='2016-06-01 16:48:51';
function getMidnight(date) {
    return (new Date(new Date(date.replace(/-/g, "/")).getFullYear(), new Date(date.replace(/-/g, "/")).getMonth(), new Date(date.replace(/-/g, "/")).getDate())); 
}
from = getMidnight(date);
to = getMidnight(to).getTime() + (24 * 3600-1) * 1000;
var event1=getMidnight(new Date(eventdate) + 24 * 3600 * 1000).getTime();   var event2=(new Date(from)).getTime();
var event3=getMidnight(eventdate).getTime();
var event4=(new Date(to)).getTime();
console.log('events',event1,event2,event3,event4);
我正在尝试打印控制台消息。在
Chrome
控制台中,它显示如下所示

events 1464719400000 1463769000000 1464719400000 1464028199000
events NAN 1463769000000 1464719400000 1464028199000
但在Safari浏览器上,它的显示不正确,打印方式如下所示

events 1464719400000 1463769000000 1464719400000 1464028199000
events NAN 1463769000000 1464719400000 1464028199000

它在
Safari
中给出了
NAN
。我希望它在
Safari
中打印与在
Chrome
中相同的内容。感谢您的帮助。

为了让您的问题更简单,您的问题在于:

new Date('2016-06-01 16:48:51')
这在chrome中可以正常工作,但在safari中不行。mdn讨论了ECMAScript 5 ISO-8601格式支持,其中指出:

或者,日期/时间字符串可以是ISO 8601格式。例如,可以传递并解析“2011-10-10”(仅日期)或“2011-10-10T14:48:00”(日期和时间)。 如果您包括T,它将起作用:

您可以使用新日期('2014-02-18T15:00:48'。替换(/\s/,'T'))

如果您处理很多这样的情况,我建议您使用矩,无论是否使用T:从字符串解析,矩似乎都能很好地处理这种情况。此外,使用momentjs,整个示例更简单:

var minutes = moment().diff("2014-02-18 15:00:48", 'minutes');

为了使您的问题更简单,您的问题在于:

new Date('2016-06-01 16:48:51')
这在chrome中可以正常工作,但在safari中不行。mdn讨论了ECMAScript 5 ISO-8601格式支持,其中指出:

或者,日期/时间字符串可以是ISO 8601格式。例如,可以传递并解析“2011-10-10”(仅日期)或“2011-10-10T14:48:00”(日期和时间)。 如果您包括T,它将起作用:

您可以使用新日期('2014-02-18T15:00:48'。替换(/\s/,'T'))

如果您处理很多这样的情况,我建议您使用矩,无论是否使用T:从字符串解析,矩似乎都能很好地处理这种情况。此外,使用momentjs,整个示例更简单:

var minutes = moment().diff("2014-02-18 15:00:48", 'minutes');

我没有从上面的答案中得到任何答案。我没有从上面的答案中得到任何答案。