iOS一些关于日历的问题

时间:2021-09-08 20:57:25
  int CalculateDays(int ys, int ms, int ds, int ye, int me, int de)

  {

      int days = CalcYearRestDays(ys, ms, ds);

      if(ys != ye) /*不是同一年的日期*/

      {

          if((ye - ys) >= ) /*间隔超过一年,要计算间隔的整年时间*/

          {

              days += CalcYearsDays(ys + , ye);

          }

          days += CalcYearPassedDays(ye, me, de);

      }

      else

      {

          days = days - CalcYearRestDays(ye, me, de);

      }

      return days;

  }

  /*计算一年中过去的天数,包括指定的这一天*/

  int CalcYearPassedDays(int year, int month, int day)

  {

      int passedDays = ;

      int i;

      for(i = ; i < month - ; i++)

      {

          passedDays += daysOfMonth[i];

      }

      passedDays += day;

      if((month > ) && IsLeapYear(year))

          passedDays++;

      return passedDays;

  }

  /*计算一年中还剩下的天数,不包括指定的这一天*/

  int CalcYearRestDays(int year, int month, int day)

  {

      int leftDays = daysOfMonth[month - ] - day;

      int i;

      for(i = month; i < MONTHES_FOR_YEAR; i++)

      {

          leftDays += daysOfMonth[i];

      }

      if((month <= ) && IsLeapYear(year))

          leftDays++;

      return leftDays;

  }

  /*

 79 计算years年1月1日和yeare年1月1日之间的天数,

 80 包括years年1月1日,但是不包括yeare年1月1日

 81 */

  int CalcYearsDays(int years, int yeare)

  {

      int days = ;

      int i;

      for(i = years; i < yeare; i++)

      {

          if(IsLeapYear(i))

              days += DAYS_OF_LEAP_YEAR;

          else

              days += DAYS_OF_NORMAL_YEAR;

      }

      return days;

  }