我正在创建一个便士拍卖网站,我在主页上有几个拍卖。每个拍卖都根据mysql日期格式的日期获得自己的计时器,格式为“Y-m-d H:i:s'。
代码工作正常,定时器都开始在Firefox和Chrome上完美倒计时,但在Safari中,数字显示为NaN:NaN:NaN
这是我的功能,使用jquery countdown plugin by Keith Wood:
function updateTimers() {
$( ".il-timer" ).each(function( index ) {
var timer = $(this);
var end_date = $(timer).attr('data-end-date');
var auction_id = $(timer).attr('data-auction-id');
var end = new Date(Date.parse(end_date,"yyyy-mm-dd hh:mm:ss"));
$('#auction_listing_timer_'+auction_id).countdown({until: end, format: 'HMS', compact: true, description: ''});
//Do it every 10 seconds...
setTimeout(function(){
updateTimers();
}, 10000);
});
};
答案 0 :(得分:5)
一些事情:
Date.parse
函数不接受第二个参数。您传递的值"yyyy-mm-dd hh:mm:ss"
将被忽略。
JavaScript中的日期解析依赖于实现。 Firefox选择不以该特定格式解析值。
new Date(Date.parse(...))
是多余的。您只需将字符串传递给日期构造函数即可。
快速解决方法是在解析之前用斜杠替换破折号:
var end = new Date(end_date.replace(/-/g, '/'));
更好的方法是使用像moment.js这样的库,这样可以控制用于解析的格式:
var end = moment(end_date, 'YYYY-MM-DD HH:mm:ss').toDate();