2012-05-05 23 views
6

ancak ben bazı basit görevleri başarmak için nasıl çok açık olması belgelere bulmuyorum oldukça serin, Momentjs kütüphanesini bulundu. Geri sayım sayacı oluşturmaya çalışıyorum ve süre nesnesini kullanmam gerektiğini tahmin ediyorum, fakat nasıl olduğunu anlamıyorum (belki de İngilizce'nin ilk dilim olmamasından kaynaklanıyor).Momentjs ve geri sayım sayacı

var time = 7200; 
var duration = moment.duration('seconds',time); 

setInterval(function(){ 
    //show how many hours, minutes and secods are left 
    $('.countdown').text(duration.format('h:mm:ss')); 
    //this doesn't work because there's no method format for the duration object. 
},1000); 

Yani saniyesini o göstermesi gerekir:

02:00:00

01:59:59

01:59:58

Neyse bu benim istediğim şey

01:59:57

...

00:00:00

nasıl Momentjs kütüphane ile bu sonucu elde ederim? Teşekkürler!

+0

Ben momentjs kütüphane bilmiyorum ama bunun yerine set setnterval'ı istediğiniz gibi görünüyor. – pimvdb

+0

Momentjs, zaman ve tarih elde etmek için yöntemler sağlar, ancak başka hiçbir şey yapmaz, böylece her saniyede 1 saniyelik çıkartmak ve bunu setInterval işlevinden görüntülemek için kendi komut dosyasını oluşturmam gerekir. – Ignas

+0

Saçmalık, şimdi söylediklerinizi alıyorum. Hata düzeltildi. – Ignas

cevap

13

duration nesne statik bir dönemi temsil eder ve akışıyla/azalış artmaz zaman. Yani, eğer onu azaltmak isterseniz, bunu kendiniz yapmanız gerekir, örneğin, her zaman bir saniye sayacı oluşturma veya duration nesnesini yeniden oluşturma. İşte ikinci seçenek için kodudur:

var time = 7200; 
var duration = moment.duration(time * 1000, 'milliseconds'); 
var interval = 1000; 

setInterval(function(){ 
    duration = moment.duration(duration.asMilliseconds() - interval, 'milliseconds'); 
    //show how many hours, minutes and seconds are left 
    $('.countdown').text(moment(duration.asMilliseconds()).format('h:mm:ss')); 
}, interval); 
+1

+1 ve tam olarak aradığım çözüm. Teşekkürler! – Ignas

2

ben çok iyi ya Momentjs bilmiyorum ama böyle bir şey arıyor düşünüyorum:

var time = 7200; 
var duration = moment.duration('seconds',time); 

setInterval(function(){ 
    var countdown = duration.milliseconds(); 
    $('.countdown').text(moment(countdown).format('h:mm:ss')); 
},1000); 
+0

ile bütünleşen küçük bir moment.js eklentisidir. Beni doğru yolda aldığınız için teşekkürler! Açıklama için – Ignas

1

https://github.com/jsmreese/moment-duration-format Its Moment.js JavaScript tarih kütüphanesine bir eklenti Moment kapsamlı biçimlendirme eklemek için Süreler

<script type="application/javascript" src="/js/moment.js"></script> 
<script type="application/javascript" src="/js/moment-duration-format.js"></script> 

<script> 

function startTimer(){ 

var duration = moment.duration({ 
    'hour': 2, 
    'minutes': 0, 
    'seconds': 0 
}); 

var interval = 1; 

var timerID = -1; //hold the id 

var timer = setInterval(function() { 

    if(duration.asSeconds() <= 0){ 
     console.log("STOP!"); 
     console.log(duration.asSeconds()); 
     clearInterval(timerID); 
    } 
    else{ 

    duration = moment.duration(duration.asSeconds() - interval, 'seconds'); 

    $('.countdown').html(duration.format("hh:mm:ss", { trim: false })); 
    } 

}, 1000); 

timerID = timer; 

return timer; 
}; 

//start 
myTimer = startTimer();  

//stop 
//clearInterval(myTimer); 

</script>