gpt4 book ai didi

C# - 验证基于 int 的 DateTime 没有异常?

转载 作者:行者123 更新时间:2023-11-30 20:30:36 25 4
gpt4 key购买 nike

This question讨论了验证表示日期的字符串,其中人们提到最好避免对常规流程逻辑使用异常。 TryParse() 对此非常有用。但 TryParse() 需要一个字符串,在我的例子中,我已经将年月日作为整数。我想验证月/日/年组合。例如 2 月 30 日。

在 new DateTime(int, int, int) 周围放置一个 try/catch 非常容易,但我想知道是否有一种方法可以在不依赖异常的情况下做到这一点。

我也觉得将这些整数组成一个字符串然后使用 TryParse() 很愚蠢。

最佳答案

以下代码将使用公历检查 DateTime 支持的范围内的有效年/月/日组合:

public bool IsValidDate(int year, int month, int day)
{
return year >= 1 && year <= 9999
&& month >= 1 && month <= 12
&& day >= 1 && day <= DateTime.DaysInMonth(year, month);
}

如果您需要使用其他日历系统,请按如下方式扩展它:

public bool IsValidDate(int year, int month, int day, Calendar cal)
{
return year >= cal.GetYear(cal.MinSupportedDateTime)
&& year <= cal.GetYear(cal.MaxSupportedDateTime)
&& month >= 1 && month <= cal.GetMonthsInYear(year)
&& day >= 1 && day <= cal.GetDaysInMonth(year, month);
}

关于C# - 验证基于 int 的 DateTime 没有异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44527890/

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