比如说,
给定一个初始日期A,
给定一个中间月份和日期B,
给定一个结束日期C,从这个A一天加一天的过,每当这个A的月份和日期和这个B的月份及日期相等,就加1,直到循环到C,然后计算一共循环了几次,怎么计算.
比如:A=2005-11-01 
      B=   10-01
      C=2008-10-02
从A=2005-11-01开始:    2005-11-01
  2005-11-02
    2005-11-03
 ...................
    2006-10-01          ----->这里和B的月,日相同,所以循环为1....................
  2008-10-01         ----->这里和B的月,日相同,所以循环为2次.
  2008-10-02(结束至C)
所以得出一共循环2次.
那么如何计算出它呢?

解决方案 »

  1.   

    DateTime A = new DateTime(2005, 11, 01);
            DateTime C = new DateTime(2008, 10, 02);        int i = 1;
            DateTime temp = A;
            while (C > temp)
            {
                temp = A.AddDays(i);
                if (temp.Month == 10 && temp.Day == 1)
                    Console.WriteLine(temp);
                i++;
            }
      

  2.   

    DateTime A = new DateTime(2005,11,01);
    DateTime C = new DateTime(2008, 10, 02);
    int count = 0;
    DateTime temp = A;
    while(temp<=C)
    {
       if(temp.Month == "给定月份" && temp.Day=="给定日")
          count++;
       temp.AddDays(1);
    }
      

  3.   

    tryDateTime A = new DateTime(2005, 11, 01);
    DateTime C = new DateTime(2008, 10, 02);
    DateTime temp = new DateTime(A.Year, 10, 01);  //以上数字可以为变量,不过那时最好用DateTime.TryParse方法来转换if (temp < A)
        temp = temp.AddYears(1);int i=0;
    while(temp<C)
    {
        temp = temp.AddYears(1);
        i++;
    }MessageBox.Show(i.ToString());  //结果为3思路:如果A的年份加B小于A,那么计算起始时间从A年加1开始,否则从A年加B开始,如楼主所给例子,2005-10-01小于A,所以超始日期从2006-10-01算起,然后年份加1,判断是否小于C即可