Пример #1
0
        /// <summary>以指定的比较类型比较指定日期早于、等于或晚于当前指定的日期</summary>
        /// <param name="t1">当前指定的日期</param>
        /// <param name="t2">要比较的日期</param>
        /// <param name="compareType">比较类型</param>
        /// <returns>以 -1、0、1 表示的早于、等于或晚于当前指定的日期</returns>
        public static int CompareTo_(this DateTime t1, DateTime t2, DateTimeCompareType compareType = DateTimeCompareType.None)
        {
            if(compareType == DateTimeCompareType.None)
                return t1.CompareTo(t2);

            DateTime d1, d2;
            int y1 = t1.Year, y2 = t2.Year;
            switch(compareType)
            {
                case DateTimeCompareType.ByYear:
                    d1 = new DateTime(y1, 1, 1);
                    d2 = new DateTime(y2, 1, 1);
                    break;
                case DateTimeCompareType.ByHalfYear:
                    d1 = new DateTime(y1, t1.GetHalfYear_(), 1);
                    d2 = new DateTime(y2, t2.GetHalfYear_(), 1);
                    break;
                case DateTimeCompareType.ByQuarter:
                    d1 = new DateTime(y1, t1.GetQuarter_(), 1);
                    d2 = new DateTime(y2, t2.GetQuarter_(), 1);
                    break;
                case DateTimeCompareType.ByMonth:
                    d1 = new DateTime(y1, t1.Month, 1);
                    d2 = new DateTime(y2, t2.Month, 1);
                    break;
                case DateTimeCompareType.ByWeek:
                    if(y1 != y2)
                        return y1.CompareTo(y2);
                    return t1.GetWeekOfYear_().CompareTo(t2.GetWeekOfYear_());
                case DateTimeCompareType.ByDay:
                    return t1.Date.CompareTo(t2.Date);
                case DateTimeCompareType.ByHour:
                    d1 = new DateTime(y1, t1.Month, t1.Day, t1.Hour, 0, 0);
                    d2 = new DateTime(y2, t2.Month, t2.Day, t2.Hour, 0, 0);
                    break;
                case DateTimeCompareType.ByMinute:
                    d1 = new DateTime(y1, t1.Month, t1.Day, t1.Hour, t1.Minute, 0);
                    d2 = new DateTime(y2, t2.Month, t2.Day, t2.Hour, t2.Minute, 0);
                    break;
                default:
                    d1 = new DateTime(y1, t1.Month, t1.Day, t1.Hour, t1.Minute, t1.Second);
                    d2 = new DateTime(y2, t2.Month, t2.Day, t2.Hour, t2.Minute, t2.Second);
                    break;
            }

            return d1.CompareTo(d2);
        }
Пример #2
0
 /// <summary>获取指定年份中总共有几周</summary>
 /// <param name="year">年份</param>
 /// <returns>表示当年的总周数</returns>
 public static int GetWeeksInYear_(int year)
 {
     DateTime dt = new DateTime(year, 12, 31);
     return dt.GetWeekOfYear_();
 }