Jquery倒计时显示NaN在Safari,在Chrome / Firefox工作良好



我正在创建一个便士拍卖网站,我在主页上有几个拍卖。每次拍卖都有自己的计时器,基于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函数不带第二个参数。

  • 您传递的值"yyyy-mm-dd hh:mm:ss"被忽略了。
  • 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();
    

相关内容

  • 没有找到相关文章

最新更新