close
C# 如何取得兩個 DateTime 日期之間的天數
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/));//取天數
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

arrow
arrow
    全站熱搜

    幻紫芊芊 發表在 痞客邦 留言(0) 人氣()