gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 22:52:46 27 4
gpt4 key购买 nike

计算某人生日的下一个周年的最快/最简洁的方法是什么。

例如,如果我知道一个人出生于 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.Month, anniversaryDate.Day-1).AddDays(1);
}

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

关于.net - 计算今天之后的下一个周年纪念日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/334149/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com