2つの日付間の日数を計算するにはどうすればいいですか? 質問する

2つの日付間の日数を計算するにはどうすればいいですか? 質問する

たとえば、入力ボックスに 2 つの日付が指定されているとします。

<input id="first" value="1/1/2000"/>
<input id="second" value="1/1/2001"/>

<script>
  alert(datediff("day", first, second)); // what goes here?
</script>

JavaScript で 2 つの日付間の日数を取得するにはどうすればよいですか?

ベストアンサー1

質問で提示された問題を解決するための概念実証として、の簡単な実装を示します。これはdatediff、2 つの日付を減算することで、それらの経過したミリ秒を取得できるという事実に依存しており、これにより、それらのミリ秒がプリミティブな数値 (1970 年初頭からのミリ秒) に変換されます。

/**
 * Take the difference between the dates and divide by milliseconds per day.
 * Round to nearest whole number to deal with DST.
 */
function datediff(first, second) {        
    return Math.round((second - first) / (1000 * 60 * 60 * 24));
}

/**
 * new Date("dateString") is browser-dependent and discouraged, so we'll write
 * a simple parse function for U.S. date format (which does no error checking)
 */
function parseDate(str) {
    var mdy = str.split('/');
    return new Date(mdy[2], mdy[0] - 1, mdy[1]);
}

alert(datediff(parseDate(first.value), parseDate(second.value)));
<input id="first" value="1/1/2000"/>
<input id="second" value="1/1/2001"/>

「通常の」Date API (名前に「UTC」が付いていない) はユーザーのブラウザのローカル タイムゾーンで動作することに注意してください。そのため、ユーザーが予期しないタイムゾーンにいる場合は、通常、問題が発生し、コードで夏時間の移行を処理する必要があります。Date オブジェクトとそのメソッドのドキュメントを注意深く読んでください。より複雑な場合は、日付操作用のより安全で強力な API を提供するライブラリの使用を強く検討してください。

また、説明のために、このスニペットではwindowオブジェクトに対する名前付きアクセス簡潔にするために、本番環境では次のような標準化されたAPIを使用する必要があります。要素IDを取得する、またはおそらく何らかの UI フレームワークです。

おすすめ記事