Dan*_*ite 1 javascript php jquery datetime jquery-countdown
我正在创建一个便士拍卖网站,主页上有几次拍卖。每次拍卖都会根据mysql日期格式中的日期获得自己的计时器,该日期格式为“ Ymd H:i:s”。
该代码运行正常,并且所有计时器在Firefox和Chrome上都开始完美地倒计时,但是在Safari中,该数字显示NaN:NaN:NaN
这是我的功能,它使用Keith Wood的jquery countdown插件:
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);
});
};
Run Code Online (Sandbox Code Playgroud)
一些东西:
该Date.parse函数没有第二个参数。"yyyy-mm-dd hh:mm:ss"您传递的值将被忽略。
JavaScript中的日期解析取决于实现。Firefox选择不解析该特定格式的值。
new Date(Date.parse(...))是多余的。您可以只将字符串传递给日期构造函数。
一种快速解决方案是在解析之前用斜杠替换破折号:
var end = new Date(end_date.replace(/-/g, '/'));
Run Code Online (Sandbox Code Playgroud)更好的方法是使用诸如moment.js之类的库,以便您可以控制用于解析的格式:
var end = moment(end_date, 'YYYY-MM-DD HH:mm:ss').toDate();
Run Code Online (Sandbox Code Playgroud)