C# 如何取得兩個 DateTime 日期之間的天數

  分享到噗浪!

在 .NET 中並沒有「直覺」的方法取得兩個 DateTime 物件之間的差異天數、月數,以致於不熟的人卻會花不少時間在找這些方法。

取得兩個日期之間的「天數」(不足一天者採「無條件刪去法」) 

 

new TimeSpan(date1.Ticks - date2.Ticks).Days

取得兩個日期之間的「天數」(回傳型別為 double 雙精確度)

 

new TimeSpan(date1.Ticks - date2.Ticks).TotalDays

取得兩個日期之間的「小時數」(回傳型別為 double 雙精確度)

 

new TimeSpan(date1.Ticks - date2.Ticks).TotalHours

取得兩個日期之間的「分鐘數」(回傳型別為 double 雙精確度) 

 

new TimeSpan(date1.Ticks - date2.Ticks).TotalMinutes

備註事項

TimeSpan 成員中,只要是 Total 開頭的屬性,都是回傳兩個時間差的「總天數」、「總時數」、「總分鐘數」、「總秒數」、「總豪秒數」,而且以 double 型別回傳,若無法整除都會有小數點出現。

另外 Days 屬性是回傳不足一天者採「無條件刪去法」的天數外 (整數型別),其餘的像是 Hours, Minutes, Seconds, Milliseconds 等屬性都是以用來描述該差異天數中的餘數進行表示。舉個例子說明會比較清楚:

DateTime date1 = new DateTime(2008, 12,31, 23,59,59, DateTimeKind.Local);
DateTime date2 = new DateTime(2003, 2,13, 23,59,59, DateTimeKind.Local);
TimeSpan s = new TimeSpan(date1.Ticks - date2.Ticks);

上述例子中,因為回傳的「差異天數」剛好為「整數」,並沒有時、分、秒、豪秒等餘數,所以 s.Hours, s.Minutes, s.Seconds, s.Milliseconds 等屬性回傳值都會是 0 喔!

參考資料:

此文章由 will 發表於 2008/1/23 上午 12:03:00

永久連結 | 評論 (2) | 此文章的RSSRSS comment feed |

分類: .Net | C#

標籤: , , ,

評論

十一月 22. 2008 10:51

jqgsninimo

博主標明“不足一小時者採「無條件刪去法」”,但似乎Timespan的這些屬性返回的是精確的浮點數信息呢。
Timespan另有屬性,如Timespan:Laughingays的返回數據則符合博主所標明。

jqgsninimo People's Republic of China

十一月 22. 2008 11:45

will

這位訪客所言極是,我已經修改文章描述,感謝您的告知。

will Taiwan

新增評論


( 您輸入的Email不會顯示於網站上 )

  Country flag

biuquote
  • 評論
  • 線上預覽
Loading