我正在创建一个便士拍卖网站,我在主页上有几个拍卖。每次拍卖都有自己的计时器,基于mysql日期格式的日期,格式为'Y-m-d H:i:s'。
在Firefox和Chrome上,代码运行良好,计时器都开始完美倒计时,但在Safari中,数字显示NaN:NaN:NaN
这是我的函数,它使用jquery倒计时插件由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);
});
};
几点:
-
Date.parse
函数不带第二个参数。 您传递的值 JavaScript中的日期解析依赖于实现。Firefox选择不解析特定格式的值
new Date(Date.parse(...))
为冗余。你可以直接将字符串传递给date构造函数。一个快速的修复方法是在解析之前用斜杠替换破折号:
var end = new Date(end_date.replace(/-/g, '/'));
一个更好的方法是使用像moment.js这样的库,这样你可以控制用于解析的格式:
var end = moment(end_date, 'YYYY-MM-DD HH:mm:ss').toDate();
"yyyy-mm-dd hh:mm:ss"
被忽略了。