jQuery倒计时在Safari中显示NaN,在Chrome / Firefox中正常运行

Dan*_*ite 1 javascript php jquery datetime jquery-countdown

我正在创建一个便士拍卖网站,主页上有几次拍卖。每次拍卖都会根据mysql日期格式中的日期获得自己的计时器,该日期格式为“ Ymd H:i:s”。

该代码运行正常,并且所有计时器在Firefox和Chrome上都开始完美地倒计时,但是在Safari中,该数字显示NaN:NaN:NaN

这是我的功能,它使用Keith Woodjquery 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)

Mat*_*int 5

一些东西:

  • 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)