9

とてもクールな Momentjs ライブラリを見つけましたが、いくつかの単純なタスクを達成する方法についてドキュメントが非常に明確であるとは思いません。カウントダウン タイマーを作成しようとしていて、duration オブジェクトを使用する必要があると推測していますが、その方法がよくわかりません (英語が私の母国語ではないためかもしれません)。とにかく、これは私が欲しいものです:

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

したがって、毎秒次のように表示されます。

02:00:00

01:59:59

01:59:58

01:59:57

...

00:00:00

Momentjs ライブラリを使用してこの結果を達成するにはどうすればよいですか? ありがとう!

4

4 に答える 4

15

durationオブジェクトは静的な期間を表し、時間の流れに伴って増減することはありません。したがって、それを減らすには、たとえば、ある種の秒カウンターを作成したり、duration毎回オブジェクトを再作成したりするなど、自分で行う必要があります。2番目のオプションのコードは次のとおりです。

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);
于 2012-05-05T16:27:03.663 に答える
1

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);
于 2012-05-05T16:09:31.400 に答える