DateTime date1 = new DateTime(2008, 1,1, 23,59,59, DateTimeKind.Local);
DateTime date2 = new DateTime(2009, 1,1, 23,59,59, DateTimeKind.Local);
TimeSpan s = new TimeSpan(date2.Ticks -date1.Ticks );
MessageBox.Show(Convert.ToString (s.Days/30));//取月數
取得兩個日期之間的「天數」(不足一天者採「無條件刪去法」)
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 等屬性都是以用來描述該差異天數中的餘數進行表示。舉個例子說明會比較清楚:
[code:c#]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);[/code]
上述例子中,因為回傳的「差異天數」剛好為「整數」,並沒有時、分、秒、豪秒等餘數,所以 s.Hours, s.Minutes, s.Seconds, s.Milliseconds 等屬性回傳值都會是 0 喔!
參考資料:
http://blog.miniasp.com/post/2008/01/Find-the-difference-between-two-DateTime.aspx
留言列表