【问题标题】:Count the Number of Month,days of next Birthday计算月数,下一个生日的天数
【发布时间】:2015-12-11 04:04:19
【问题描述】:

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

        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 天作为输出

请帮我解决这个问题。

【问题讨论】:

标签: c# date


【解决方案1】:

试试这个:

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

在“int d...”行之前插入它。它应该给你月数,你的天数应该是

【讨论】:

    【解决方案2】:

    问题是,“一个月”不是“一个月”,而是 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).
    

    【讨论】:

    • 请注意,您必须使用AddYears 来精确计算下一个生日。
    猜你喜欢
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 2016-03-23
    • 2019-01-08
    • 1970-01-01
    相关资源
    最近更新 更多