Jquery倒计时在Safari中显示NaN,在Chrome / Firefox中正常工作

时间:2014-08-04 03:56:16

标签: javascript php jquery datetime jquery-countdown

我正在创建一个便士拍卖网站,我在主页上有几个拍卖。每个拍卖都根据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);

        });
    };

1 个答案:

答案 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();