2015-11-23 239 views
0

我的頁面上有此JavaScript。日期數學適用於Chrome,但不適用於Firefox或Safari

function getTimeRemaining(endtime){ 
    var t = Date.parse(endtime) Date.parse(new Date()); 
    var seconds = Math.floor((t/1000) % 60); 
    var minutes = Math.floor((t/1000/60) % 60); 
    var hours = Math.floor((t/(1000*60*60)) % 24); 
    var days = Math.floor(t/(1000*60*60*24)); 
    return { 
    'total': t, 
    'days': days, 
    'hours': hours, 
    'minutes': minutes, 
    'seconds': seconds 
    }; 
} 

結束時間就像一個日期「2016年1月12日23時15分零零秒」

我的代碼工作完全在Chrome但在Safari和Firefox返回NaN

+0

歡迎使用stackoverflow :) – www139

+0

你確定這是確切的代碼嗎?在Chrome和其他地方,'var t = Date.parse(endtime)Date.parse(new Date());'應該作爲語法錯誤失敗。 –

回答

0

我假設這行:

var t = Date.parse(endtime) Date.parse(new Date()); 

應該是

var t = Date.parse(endtime) - Date.parse(new Date()); 

的問題是你的結束時間的格式。由於您沒有使用標準格式,因此它可能在Chrome中運行,但不在其他brosers中運行。 From MDN

由於日期字符串的語法分析的方差,建議總是手動解析字符串作爲結果不一致,特別是在不同的ECMAScript實現,其中的字符串,如「2015年10月12日12時00分00秒「可能被解析爲NaN,UTC或本地時區。

+0

導致錯誤的日期格式。 謝謝你 –

0

我只掙錯別字和不完整的信息,一些猜測,但要獲得有用時差:

function getTimeRemaining(endtime) { 
 
    var t = Date.parse(endtime) - (new Date()).getTime(); 
 
    var seconds = Math.floor((t/1000) % 60); 
 
    var minutes = Math.floor((t/1000/60) % 60); 
 
    var hours = Math.floor((t/(1000 * 60 * 60)) % 24); 
 
    var days = Math.floor(t/(1000 * 60 * 60 * 24)); 
 
    return { 
 
    'total': t, 
 
    'days': days, 
 
    'hours': hours, 
 
    'minutes': minutes, 
 
    'seconds': seconds 
 
    }; 
 
} 
 

 
console.log(getTimeRemaining("2020-04-04"));

你並不需要一個parse()new Date() - 它不是一個字符串,結果將是不可預測的。在Date上簡單地使用getTime()即可獲得其毫秒錶示。

+0

您的信息可幫助我查看錯誤謝謝! –

相關問題