Пример #1
0
 public Form1()
 {
     InitializeComponent();
     DateTime st   = new DateTime(2010, 1, 1);
     DateTime ed   = new DateTime(2010, 2, 5);
     PawnSpan Span = GetPawnSpan(st, ed);
 }
Пример #2
0
        public static PawnSpan GetPawnSpan(DateTime iStartDate, DateTime iEndDate)
        {
            DateTime StartDate, EndDate;

            if (iStartDate > iEndDate)
            {
                EndDate   = iStartDate;
                StartDate = iEndDate;
            }
            else
            {
                StartDate = iStartDate;
                EndDate   = iEndDate;
            }

            PawnSpan Result       = new PawnSpan();
            int      LastMonthDay = 0;

            Result.Months = (EndDate.Month - StartDate.Month) + (EndDate.Year - StartDate.Year) * 12;

            #region 计算上月天数
            switch (EndDate.Month)
            {
            case 1:
                LastMonthDay = 31;
                break;

            case 2:
                LastMonthDay = 31;
                break;

            case 3:
                if (DateTime.IsLeapYear(EndDate.Year))
                {
                    LastMonthDay = 29;
                }
                else
                {
                    LastMonthDay = 28;
                }
                break;

            case 4:
                LastMonthDay = 31;
                break;

            case 5:
                LastMonthDay = 30;
                break;

            case 6:
                LastMonthDay = 31;
                break;

            case 7:
                LastMonthDay = 30;
                break;

            case 8:
                LastMonthDay = 31;
                break;

            case 9:
                LastMonthDay = 31;
                break;

            case 10:
                LastMonthDay = 30;
                break;

            case 11:
                LastMonthDay = 31;
                break;

            case 12:
                LastMonthDay = 30;
                break;
            }
            #endregion

            if (EndDate.Day < StartDate.Day)
            {
                Result.Days   = LastMonthDay - StartDate.Day + EndDate.Day;
                Result.Months = Result.Months - 1;
            }
            else
            {
                Result.Days = EndDate.Day - StartDate.Day;
            }


            if (Result.Days == 0)
            {
                Result.CountDays = 0;
            }
            else if (Result.Days <= 5)
            {
                Result.CountDays = 5;
            }
            else if (Result.Days <= 15)
            {
                Result.CountDays = 15;
            }
            else
            {
                Result.CountDays = 30;
            }

            if (Result.Months == 0 && Result.Days == 0)
            {
                Result.CountDays = 5;
            }



            //计算整个天数
            DateTime CountEndDate = new DateTime();
            CountEndDate        = StartDate;
            CountEndDate        = CountEndDate.AddMonths(Convert.ToInt32(Result.Months.ToString()));
            CountEndDate        = CountEndDate.AddDays(Convert.ToInt32(Result.CountDays.ToString()));
            Result.CountDaysAll = CountEndDate.Subtract(StartDate).Days;

            Result.DaysAll = EndDate.Subtract(StartDate).Days;

            return(Result);
        }