2017-03-29 13 views
2

JavaScriptのDateオブジェクトの周りを遊んでいるので、ちょっと奇妙なことが起こった。
私は2つの与えられた日付の間に存在しているどのように多くの日数を把握しようとしている、そしてそのために、私は以下の式を使用します。日付、別の月間の日数を計算する

var oneDay = 24*60*60*1000; 
var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay))); 

あなたは2017年5月28日& 2017年5月30日を取る場合は、 2日返します - それは

var oneDay = 24*60*60*1000; 
var firstDate = new Date(2017, 05, 28); 
var secondDate = new Date(2017, 05, 30); 
var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay))); 

はあなたが2017年5月30日& 2017年6月1日を取るべきであるかのように1日返す - 2日になるはず

var oneDay = 24*60*60*1000; 
var firstDate = new Date(2017, 05, 28); 
var secondDate = new Date(2017, 05, 30); 
var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay))); 

あなたは2017年5月30日& 2017年6月1日を取る場合は、3日返します - 私は何の問題を考え出すしようとして1.5時間を使用していた2日間

var oneDay = 24*60*60*1000; 
var firstDate = new Date(2017, 11, 29); 
var secondDate = new Date(2017, 12, 01); 
var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay))); 
+0

おそらくmomentjsを使用すると、少し簡単になりますか? – MrNew

+0

あなたの返事ありがとうございますMrNew、私は忘れてしまいます<3 – Mac

+0

2番目と3番目の例では、テキストの日付はコンストラクタの値で表されるものと非常に異なり、誤解を許しています月の番号。 – RobG

答えて

1

ことになってし私はそれを把握して投稿してから10秒後でした。

問題は、日付オブジェクトです取る:0

  • 2月として

    • 月、1
    • ...
    • として...
    • として11月、
    • 12月1日11
  • -1

    下記のコードを使用して、2つの日付間の差異(日数)を計算します。

    var dateOne = new Date(firstDate); 
    var dateTwo = new Date(secondDate); 
    var dateDifference = Math.floor((dateTwo - dateOne)/86400000); 
    console.log(dateDifference); 
    
    +1

    何の説明もせずに単にコードを投稿するだけの答えはありません。 – RobG

    +0

    [編集]リンクを使用して、このコードの仕組みを説明してください。説明が将来の読者を助ける可能性が高いので、コードを与えないでください。 [回答]も参照してください。 [ソース](http://stackoverflow.com/users/5244995) –

    0

    Dateコンストラクタでは、論理範囲外の値も使用できます。

    例:​​

    出典: 値がその論理的範囲よりも大きい場合には日が一つ以上の引数を持つコンストラクタと呼ばれている https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

    、(例えば13 として提供されています月値または分値の70)、隣接値は に調整されます。例えば。新しい日付(2013、13、1)は、新しい 日付(2014,1,1)の日付と同じです.2014-02-01の日付が作成されます( 月は0に基づいています)。同様に他の値:新しい日付(2013,2,1,0、 70)は、新しい日付(2013,2,1,1,10)に相当し、両方とも2013年3月1日10時10分の日付を作成します。 00。

    関連する問題