2016-06-08 44 views
0

我在使用Javascript比較某些日期時遇到此問題。我只在Safari上收到此問題。它的工作很好,在Chrome。讓我先解釋我的代碼。使用JavaScript在Safari中獲取日期值使用Javascript

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 

但在Safari瀏覽器它不能正常顯示和打印如下所示。

events NAN 1463769000000 1464719400000 1464028199000 

這是給NANSafari。我希望它在Safari中的打印效果與在Chrome中的打印效果相同。任何幫助表示讚賞。

回答

0

爲了讓您更輕鬆的問題你的問題是:

new Date('2016-06-01 16:48:51') 

這項工作在Chrome還可以,但不是在Safari瀏覽器。關於ECMAScript 5 ISO-8601格式支持的mdn說:

或者,日期/時間字符串可能是ISO 8601格式。例如,可以傳遞和解析「2011-10-10」(剛剛日期)或「2011-10-10T14:48:00」(日期和時間)。 如果包括T-它的工作原理:

new Date('2016-06-01T16:48:51') 

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

如果你處理了很多這樣的情況,我會推薦使用看起來很好地處理這種情況的時刻,有或沒有T:從字符串解析。此外,您的整個示例使用momentjs更容易:

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

我沒有從上面的答案中得到任何解決方案。 – subhra

相關問題