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

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

概述什么是计算某人生日下一周年的最快/最好的方法. 例如,如果我知道一个人出生于1990年1月31日,今天是2000年2月10日,他们的下一个周年纪念日将是2001年1月31日. 2月29日应该到3月1日(例如,如果他们出生于1990年2月29日,他们的第一个生日将是1991年3月1日). 编辑:哇 – 我认为这将是更加微不足道的.我真的假设有一些我可以使用的库函数. Anyhoo,感谢你们所有人,我 什么是计算某人生日下一周年的最快/最好的方法.

例如,如果我知道一个人出生于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 oDateEnd 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;}
总结

以上是内存溢出为你收集整理的.net – 计算今天之后的下一个周年纪念日全部内容,希望文章能够帮你解决.net – 计算今天之后的下一个周年纪念日所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1232781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存