2012年6月11日 星期一

{C#} 二個日期相差天數計算(TimeSpan 結構)

使用TimeSpan 結構,計算二個Datetime格式相差之天數、月、年等

//先將指定日期值轉為DateTime

 if (!string.IsNullOrEmpty(abcStr))
                        abcDate = DateTime.ParseExact( abcStr , "yyyy/MM/dd", null);
                    //實際日期大於當下
                    if (  abcDate > DateTime.Now)
                    {
                          //找出指定日期的第一天(以週日為一週的第一天)
                          abcDate =   abcDate .AddDays(Convert.ToDouble((0 - Convert.ToInt16(  abcDate .DayOfWeek))));
                       //算出指定週,規則說明:以本週為第0週,算出指定日期為第幾週
                        var week = ( abcDate.Subtract(DateTime.Now).Days + 1) / 7; //日期相減

                    }


TimeSpan值屬性與方法:

Days:返回用天數計算相差天整數。(時間相差會有時、分、秒考慮,會有不滿一天的可能)

Subtract:從中減去另一個時間值。

Ticks:返回TimeSpan值的tick數。//詳見用法參考連結

TotalDays:返回時間值表示的天數。(與Days的差別是,此會將會小數點(不滿一天的相差值)



更多詳細在參考屬性、方式等資訊:
http://msdn.microsoft.com/zh-tw/library/system.timespan.aspx

參考資料:
http://www.guan8.net/Java/430623.html

Tick用法參考:
http://www.dotblogs.com.tw/darren.net/archive/2009/02/26/7303.aspx