2017-10-26 6 views
2

以下のプログラムの場合、実行日は26/10/2017で、変数はdeadline=29/10/2017です。Moment.jsと "fromNow"で正しい出力を得るにはどうすればよいですか?

私が使用していますmoment.js:

var deadline = '29/10/2017' 
 
var days = moment(deadline, "DD/MM/YYYY").fromNow(); 
 
console.log(days)
<script src="https://momentjs.com/downloads/moment-with-locales.min.js"></script>

私の出力がin 2 daysですが、実際に私は、私もcalulatingさfromNowので、それだと思う右の答えはin 3 days

だと思います時間と、私の質問は、どのように私は正しい出力を得るために、これをリセットすることができますか?

+0

私が想定していますが、「今」の時間が含まれています:00、したがって、それは2日間です。これはあなたのコードの便利なスニペットを見ることなく、ただの前提です。質問を更新して詳細をお知らせください –

+0

@RoryMcCrossan更新しました。興味深いのは、です。 「4日」や「5日」のような日数が増えると、正しく動作します。 – Jarla

答えて

1

締め切りのmomentjsインスタンスで.endOf('day')を使用すると3日かかることがあります。

また、23:59などの日付の上にタイムスタンプを使用して、同じ機能を利用することもできます。むしろあなたがfromを使用することができますfromNow使用するよりも

var deadline = '29/10/2017' 
 
var days = moment(deadline, "DD/MM/YYYY").endOf('day').fromNow(); 
 
// Change the time to 23:59:59   ^^^^^^^^^^^^^ 
 
console.log(days)
<script src="https://momentjs.com/downloads/moment-with-locales.min.js"></script>

1

。これを使用すると、真夜中に今日の日付をリセットすることができ、その代わりに対してそれを比較します。締め切りは `00からであるのに対し、

var deadline = '29/10/2017', 
 
    now = new Date().setHours(0,0,0,0), 
 
    days = moment(deadline, "DD/MM/YYYY").from(now); 
 

 
console.log(days)
<script src="https://momentjs.com/downloads/moment-with-locales.min.js"></script>

関連する問題