2012-03-13 5 views
0

私はPHPからの2つの時間の差であるカウントダウン時間を望みます、結果はタイムスタンプです。PHPのタイムスタンプ差からのJavaScriptのカウントダウン

{var $time = new \DateTime()}   

<div class="date" data-date="{= ($time2->getTimestamp() - $time->getTimestamp())*1000}"> 

私は時間差[タイムスタンプ]を持っています。今度はこの時間をカウントダウンしたい。この情報をHTMLからJSに取得します。

$(function() {   
    $(".date").each(function(){   
     time = $(this).data('date');   
     $.countdown($(this).children(".countdown"), time); 
    }); 
}); 

正常に動作しないコードがあります。

jQuery.countdown = function(selector, datevalue) { 

        var amount = datevalue; 

     // catch past dates 
     if(amount < 0){ 
      $(selector).html("Done"); 
     } 

     // date is in the future, calculate the diff 
     else{ 
      days=0;hours=0;mins=0;secs=0;out=""; 

      amount = Math.floor(amount/1000);//kill the "milliseconds" so just secs 

      days=Math.floor(amount/86400);//days 
      amount=amount%86400; 

      hours=Math.floor(amount/3600);//hours 
      amount=amount%3600; 

      mins=Math.floor(amount/60);//minutes 
      amount=amount%60; 

      secs=Math.floor(amount);//seconds 

      //if(days != 0){out += days +" day"+((days!=1)?"s":"")+", ";} 
          //if(days == 0) { 
           if(days != 0 || hours != 0){out += ((hours<10)?"0":"") + hours +":";} 
           if(days != 0 || hours != 0 || mins != 0){out += ((mins<10)?"0":"") + mins +":";} 
           out += ((secs<10)?"0":"") + secs; 
           $(selector).html(out); 
          //} 
      // run it all again 
      setTimeout(function() { 
       $.countdown(selector, datevalue); 
      }, 1000); 

     } 

}; 

JSからの時間は適切な場所にありますが、カウントダウンはしません。

+0

どのようにして、タイムアウト1秒の量をその仕事与えている必要がある場合は正常に動作しますか? –

+0

'time = parseInt($(this).data( 'date')、10);'おそらく? – mplungjan

+0

を削除し、 'amount = Math.floor(amount/1000);を削除すると、ミリ秒単位で「ちょうど秒」を殺すと、PHPから* 1000を取り除くことができます – mplungjan

答えて

0

答えは非常に簡単です:の日付の値を減らさないでください。だから、以下の例ではそのすべての反復のために同じ

ルックは

jQuery.countdown = function(selector, datevalue) { 

    var amount = datevalue; 

    // catch past dates 
    if(amount < 0){ 
     $(selector).html("Done"); 
    } 

    // date is in the future, calculate the diff 
    else{ 
     datevalue--; 
     $(selector).html(datevalue); 
     setTimeout(function() { 
      $.countdown(selector, datevalue); 
     }, 1000); 
    } 
}; 

$.countdown('.date', 10);​​​ 
+0

おっと、簡単です。テックス。 –

関連する問題