2016-12-10 6 views
3

2つの日付は、通常start_timeとend_timeです。時間の差を取って分コンポーネントが10分を超える場合は、時間コンポーネントを切り上げたいと思います。例えば:差が10分を超える場合、2回の間の継続時間を延長します。

  • 12分の差 - 1時間のラウンドアップ時間1から
  • 差31分 - ラウンド2時間
  • 2時間4分の差アップ - 2時間
  • に保ちます
  • 3時間59分 - 4時間までの差

これまでのところ私が達成できるコードはここにあります。私は2つの日付の違いを見つけて、それを3600000でダイビングして丸めますが、それは1時間30分から2時間に変換するようなものです。

var duration = Math.round(moment(end_time).diff(moment(booking_result.start_time))/3600000); 

誰も解決策を提案できますか?

+0

end_timeとbooking_result.start_timeの形式は何ですか。彼らはISOでなければなりません。そうでなければ、フォーマットモーメント(end_time、 'x')を指定する必要があります。 –

+0

彼らはISOであり、私はその違いを見つけることができます –

+0

あなたは、 10分以上、次の時間までに丸めますか?だから31分の違いは1時間、1時間12分は2時間、2時間3分はまだ2時間でしょうか? –

答えて

2

私はあなたがmomenjsを使用している見ての通り、それはあなたが何をしたいのは簡単です:

var duration = moment.duration(end_time.diff(start_time)); 
var hours = duration.asHours(); 

小数と時間であなたの時間を与えることを、私はあなたの質問から理解し、あなたがやりたいれますこれを最も近い整数に上に丸めますが、この差が10分を超える場合に限ります。

if (duration.minutes() > 10) { 
    var result = Math.ceil(hours); 
} 
+0

私の編集OPごとのコメントを確認してください - デルタの分の部分が10分を超えないように丸めます。例えば。 2時間3分の時間は2時間にとどまりますが、2時間11分の時間は3時間になります。 –

+0

それはちょうどマイナーチェンジしましたvar duration = moment(end_time).diff(moment(booking_result.start_time)); var countDuration = moment.duration(duration); var hours = countDuration .asHours(); –

+1

ああ、それはあなたの日付変数が瞬間ではなかったからです...喜んで助けてください! – Vi100

関連する問題