2015-11-23 197 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

您的信息可帮助我查看错误谢谢! –

相关问题