请问一个日期计算的问题,类似于计算周岁.
比如说,
给定一个初始日期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次.
那么如何计算出它呢?
------解决方案--------------------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++;
}
------解决方案--------------------try
DateTime 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即可