计算下一个生日的月、天的数目

本文关键字:下一个 生日 计算 | 更新日期: 2023-09-27 18:12:48

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

        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日,那么在int d中我将得到44天(剩余天数),但我想要1个月零14天作为输出

请帮助我解决这个问题。

计算下一个生日的月、天的数目

试试这个:

int months = 0;
for (; months< 12; )
{
    td = td.AddMonths(1);
    if (td > next)
    {
        td = td.AddMonths(-1);
        break;
    }
    months++;
}

插入到"int d…"行之前。它应该给你月数,你的日计算应该是<一个月。>

问题是,"a month"不是"a month",而是28到31之间的天数。

然而,通过应用AddMonths,您可以获得相当接近统一和有用的方法:

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);
结果:

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