Monday, October 31, 2011

[C#] DayDiff 取得天數差異

C# 裡面沒有 DateDiff 這種很方便取得時間差異的函式,雖然可以引用 Microsoft.VisualBasic來 使用裡面的 DateAndTime.DateDiff Method,不過不是每個人都想這樣做,所以只好自己來寫一個合用的,保哥有一篇文章寫了用 TimeSpan 判斷日期差異的方式,但是這也不合我用,所以就自己亂寫了一個。
protected int DayDiff(DateTime dfrom,DateTime dto)
        {
            int day;
            day=DateTime.IsLeapYear(dfrom.Year)?366:365;

            if (dto.Year == dfrom.Year)
                return dto.DayOfYear - dfrom.DayOfYear;
            else if (dto.Year > dfrom.Year)
                return dto.DayOfYear - dfrom.DayOfYear + day;
            else
                return dto.DayOfYear - dfrom.DayOfYear - day;
        }

會這樣寫主要是要讓某些狀況下的結果是正確的,例如今天23:00跟明天01:00,應顯示差一天,這時 TimeSpan 求出來的結果就會是零天,還有順便加上閏年的判斷。因為需求關係,我這寫法沒有去判斷跨多年的情況,如果有需要的話再自行加上吧。

No comments:

Post a Comment