如何計算兩個日期之間的天數?
P粉604848588
2023-08-23 16:51:49
<p>例如,輸入框中給出兩個日期:</p>
<pre class="brush:php;toolbar:false;"><input id="first" value="1/1/2000"/>
<input id="second" value="1/1/2001"/>
<script>
alert(datediff("day", first, second)); // what goes here?
</script></pre>
<p>如何在 JavaScript 中取得兩個日期之間的天數? </p>
截至撰寫本文時,只有其他答案之一可以正確處理 DST(夏令時)轉換。以下是位於加利福尼亞州的系統上的結果:
雖然
Math.round
回傳正確的結果,但我認為它有點笨拙。相反,透過明確考慮 DST 開始或結束時 UTC 偏移量的變化,我們可以使用精確的算術:說明
JavaScript 日期計算很棘手,因為
Date
物件在內部儲存 UTC 時間,而不是本機時間。例如,3/10/2013 12:00 AM 太平洋標準時間(UTC-08:00) 儲存為3/10/2013 8:00 AM UTC,3/11/2013 12:00 AM 太平洋夏令時間( UTC-07 :00) 儲存為3/11/2013 7:00 AM UTC。這一天,當地時間午夜到午夜僅比 UTC 23 小時!雖然當地時間的一天可以多於或少於 24 小時,但 UTC 的一天始終恰好是 24 小時。 1 上面顯示的
daysBetween
方法利用了這一點透過先呼叫treatAsUTC
將兩個本地時間調整為午夜UTC,然後再進行減法和除法來了解這一事實。1。 JavaScript 忽略閏秒。
這裡是
datediff
的快速而骯髒的實現,作為解決問題中提出的問題的概念證明。它依賴於這樣一個事實:您可以透過減去兩個日期來獲取它們之間經過的毫秒數,這會將它們強制轉換為其原始數值(自 1970 年初以來的毫秒數)。