加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – 计算今天之后的下一个周年纪念日

发布时间:2020-12-17 07:17:34 所属栏目:百科 来源:网络整理
导读:什么是计算某人生日下一周年的最快/最好的方法. 例如,如果我知道一个人出生于1990年1月31日,今天是2000年2月10日,他们的下一个周年纪念日将是2001年1月31日. 2月29日应该到3月1日(例如,如果他们出生于1990年2月29日,他们的第一个生日将是1991年3月1日). 编辑
什么是计算某人生日下一周年的最快/最好的方法.

例如,如果我知道一个人出生于1990年1月31日,今天是2000年2月10日,他们的下一个周年纪念日将是2001年1月31日.

2月29日应该到3月1日(例如,如果他们出生于1990年2月29日,他们的第一个生日将是1991年3月1日).

编辑:哇 – 我认为这将是更加微不足道的.我真的假设有一些我可以使用的库函数. Anyhoo,感谢你们所有人,我得到了我认为是一个有效的解决方案,它处理了所有愚蠢的2月29日问题.它虽然不是很漂亮:-(

Function NextBirthDay2(ByVal dStartDate As Date,ByVal dNow As Date) As Date
    Dim oDate As Date
    Dim bFeb29thHack As Boolean = dStartDate.Month = 2 And dStartDate.Day = 29

    If bFeb29thHack Then
        oDate = New Date(dNow.Year,3,1)
    Else
        oDate = New Date(dNow.Year,dStartDate.Month,dStartDate.Day)
    End If

    If (oDate <= dNow) Then
        oDate = oDate.AddYears(1)
    End If

    If Date.IsLeapYear(oDate.Year) And bFeb29thHack Then
        oDate = oDate.AddDays(-1)
    End If
    Return oDate

End Function

解决方法

我没有在VB.Net工作过,但我认为C#代码会有足够的意义:

private DateTime nextDate(DateTime currentDate,DateTime anniversaryDate)
{
    DateTime nextDate;
    try{
        nextDate = new DateTime(currentDate.Year,anniversaryDate.Month,anniversaryDate.Day);
    } catch (ArgumentOutOfRangeException)
    {
        //for 29 Feb case.
        nextDate = new DateTime(currentDate.Year,anniversaryDate.Day-1).AddDays(1);
    }

    if (nextDate <= currentDate)
        nextDate = nextDate.AddYears(1);
    return nextDate;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读