关于c#:计算下个生日的月数

Count the Number of Month,days of next Birthday

我有一个代码,通过它我可以找到下一个生日计数的唯一天数,但我不仅需要天,还需要月。

1
2
3
4
5
6
7
8
9
10
        DateTime birthday=dtp.Value;
        DateTime td = DateTime.Today;
        DateTime next = new DateTime(td.Year, birthday.Month, birthday.Day);

        if (next < td)
        {
            next = next.AddYears(1);
        }

        int d = (next - td).Days;`

如果我的出生日期是1994年10月29日,那么我将得到44天(剩余天数),但我希望1个月14天作为输出。

请帮我解决这个问题。


试试这个:

1
2
3
4
5
6
7
8
9
10
11
int months = 0;
for (; months< 12; )
{
    td = td.AddMonths(1);
    if (td > next)
    {
        td = td.AddMonths(-1);
        break;
    }
    months++;
}

这只是在你插入"int d……"线。它应该给你数月的天计算,你应该一个月有。


问题是,这是"一个月"是不是"一个月",但一天计数之间的28和31)。

然而,你可以得到很多的应用AddMonths靠近A制服和有用的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DateTime birthday = new DateTime(1980, 11, 19);
DateTime today = DateTime.Today;
int months = 0;
int days = 0;

DateTime nextBirthday = birthday.AddYears(today.Year - birthday.Year);
if (nextBirthday < today)
{
    nextBirthday = nextBirthday.AddYears(1);
}

while (today.AddMonths(months + 1) <= nextBirthday)
{
    months++;
}
days = nextBirthday.Subtract(today.AddMonths(months)).Days;

Console.WriteLine("Next birthday is in {0} month(s) and {1} day(s).", months, days);

结果:

1
Next birthday is in 2 month(s) and 4 day(s).