2012-05-05 15 views
6

मुझे मोमेंटज लाइब्रेरी मिली जो बहुत अच्छी है, हालांकि मुझे कुछ सरल कार्यों को प्राप्त करने के तरीके पर बहुत स्पष्ट होने के लिए दस्तावेज़ नहीं मिला है। मैं उलटी गिनती टाइमर बनाने की कोशिश कर रहा हूं और मुझे लगता है कि मुझे अवधि वस्तु का उपयोग करना चाहिए, लेकिन मुझे समझ में नहीं आता कि (शायद इस तथ्य के कारण कि अंग्रेजी मेरी पहली भाषा नहीं है)।मोमेंटज और उलटी गिनती टाइमर

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

तो everysecond यह प्रदर्शित करना चाहिए:

02:00:00

01:59:59

01:59:58

वैसे भी इस जो मैं चाहता है

01:59:57

...

00:00:00

मैं इस परिणाम को मोमेंटज लाइब्रेरी के साथ कैसे प्राप्त करूं? धन्यवाद!

+0

मैं momentjs पुस्तकालय पता नहीं है , लेकिन ऐसा लगता है कि आप इसके बजाय 'setInterval' चाहते हैं। – pimvdb

+0

मोमेंटज समय और तिथियां पाने के तरीकों को प्रदान करता है, लेकिन यह कुछ और नहीं करता है इसलिए मुझे अपनी दूसरी स्क्रिप्ट को हर सेकेंड में 1 सेकंड घटाने और सेट इंटरवल फ़ंक्शन से प्रदर्शित करने के लिए बनाना है। – Ignas

+0

ओह बकवास, मैं अब जो कह रहा हूं उसे प्राप्त करता हूं। गलती तय की – Ignas

उत्तर

13

duration वस्तु एक स्थिर अवधि का प्रतिनिधित्व करता है, और यह के प्रवाह के साथ/कमी में वृद्धि नहीं करता पहर। तो यदि आप इसे कम करना चाहते हैं तो आपको इसे स्वयं करना होगा, उदाहरण के लिए प्रति सेकंड duration ऑब्जेक्ट का एक प्रकार का काउंटर बनाना या पुनर्निर्माण करना। यहाँ दूसरा विकल्प के लिए कोड है:

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 जो ठीक वही है जो मैं ढूंढ रहा था। धन्यवाद! – Ignas

2

मैं बहुत अच्छी तरह से या तो Momentjs पता नहीं है, लेकिन मुझे लगता है कि आप कुछ इस तरह की तलाश में हैं:

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

के साथ एकीकृत करता है मुझे सही रास्ते पर लाने के लिए धन्यवाद! स्पष्टीकरण और समाधान के लिए – Ignas

1

https://github.com/jsmreese/moment-duration-format इसके Moment.js जावास्क्रिप्ट तारीख पुस्तकालय के लिए एक प्लगइन पल के लिए व्यापक स्वरूपण जोड़ने के लिए अवधियां

<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> 
संबंधित मुद्दे