2 つの日付の間の日数を計算するにはどうすればよいですか?
P粉604848588
2023-08-23 16:51:49
<p>たとえば、入力ボックスに 2 つの日付が指定されています。</p>
<pre class="brush:php;toolbar:false;"><input id="first" value="1/1/2000"/>
<input id = "秒" 値 = "1/1/2001"/>
<スクリプト>
alert(datediff("day", first, Second)); // ここには何が入るでしょうか?
</script></pre>
<p>JavaScript で 2 つの日付の間の日数を取得するにはどうすればよいですか? </p>
この記事の執筆時点では、DST (夏時間) 変換を正しく処理できるのは他の回答のうち 1 つだけです。カリフォルニアにあるシステムでの結果は次のとおりです:
リーリー#Math.round
は正しい結果を返しますが、少し扱いにくいと思います。代わりに、DST の開始時または終了時の UTC オフセットの変更を明示的に考慮することで、正確な算術演算を使用できます。 リーリー
イラストDate
オブジェクトは内部的にローカル時間ではなく UTC 時間を保存するため、JavaScript の日付計算は注意が必要です。たとえば、2013 年 3 月 10 日の午前 12:00 太平洋標準時 (UTC-08:00) は、2013 年 3 月 10 日午前 8:00 UTC、および 2013 年 3 月 11 日午前 12:00 太平洋夏時間 ( UTC-07 :00) は 2013 年 3 月 11 日 7:00 AM UTC として保存されます。この日、午前 0 時から午前 0 時までの現地時間は UTC よりわずか 23 時間進んでいます。
現地時間での 1 日の長さは 24 時間より前後する場合がありますが、UTC での 1 日は常に正確に 24 時間です。
1上に示した daysBetween メソッドは、最初に
1. JavaScript はうるう秒を無視します。treatAsUTC
を呼び出して両方の現地時間を UTC 午前 0 時に調整し、次に減算して除算することでこれを利用しています。これは、質問で提起された問題を解決するための概念実証としての
datediff
の クイック アンド ダーティ 実装です。これは、2 つの日付を減算することでそれらの間の経過ミリ秒数を取得できるという事実に基づいており、これにより元の数値 (1970 年初頭からのミリ秒数) に強制されます。