2017-05-13 16 views
0

なぜこれが正しく動作しないのか説明できますか?以下は、current.jsを使用してCURRENT時間と私の可変時間の差を計算するコードです。 HERE Moment.js - 日付の間に.diffを正しく計算できない

  //breakfast 
      var breakfasttimeleft = moment(person.breakfast, 'HH:mm'); 
      console.log("Person breakfast is at: " + person.breakfast + " -- Current time is at: " + currenttime); 
      console.log(breakfasttimeleft.diff(now, 'minutes')); 

      //lunch 
      var lunchtimeleft = moment(person.lunch, 'HH:mm'); 
      console.log("Person lunch is at: " + person.lunch + " -- Current time is at: " + currenttime); 
      console.log(lunchtimeleft.diff(now, 'minutes')); 

      //dinner 
      var dinnertimeleft = moment(person.dinner, 'HH:mm'); 
      console.log("Person dinner is at: " + person.dinner + " -- Current time is at: " + currenttime); 
      console.log(dinnertimeleft.diff(now, "minutes")); 
     }) 

が出力されます。

CONSOLE LOG 
Person breakfast is at: 18:35 -- Current time is at: 18:35 
0 
Person lunch is at: 23:35 -- Current time is at: 18:35 
300 
Person dinner is at: 04:35 -- Current time is at: 18:35 
-840 

ディナーは完全に上記のように、いくつかの場所で台無しと他人にそれは完全に正常に動作しています。 基本的には、他の日が別の日である場合に時間を調べる方法がわからないので、代わりに現在の2時間の間に相違点が検索されます。

18:35から04:35。午前中は18時35分から04時35分までです。これは約10時間です。代わりに、その日の朝の04:35からその日の18:35までの時間を計算します。 これを正しく動作させるにはどうすればよいですか?

それは日+時間+分

答えて

1

あるので、どのように私は、さてあなたは、単に回でそれを提供しているが、それはあまりにもいくつかの日付を格納するために持っている、それをフォーマットすることができます..私はaswell日を述べるために持って表示されます。日付を指定しないと、現在の日付に初期化されます。これはあなたのケースで起こっていることです。

また、設定したい日付をすぐに知る方法がありません。自分で日付を設定する必要があります。あなたも(理想的には完全なもの)日付を供給する場合は、このフォーマット文字列を使用することができますdinnertimeleft.add(1, 'd')

最も簡単な方法は、ちょうどadd a dayあなたが作成した日付になりYYYY-MM-DD HH:mm したり、独自のものを作成します以下のthisドキュメントに従います。

+0

ええ、私はちょうどそれを考え出した。 私はそれをどのようにフォーマットできますか知っていますか?今はそのHH:mm。 私はどのように日を設定しますか?それはD:HH:mmですか? –

+0

@TheGarrusが私の答えを更新しました。あなたがいつも1日だけ加算/減算する必要があるならば、最初の方法はおそらく簡単でしょう。 – Riiverside

+0

私は2番目の答えが必要YYYY-MM-DD HH:mm ありがとう –

関連する問題