ori*_*zil 2 c# validation datetime exception
这个问题讨论有关验证表示日期的字符串的问题,在该问题中人们提到最好避免将Exceptions用于常规流逻辑。而TryParse()对此非常有用。但是TryParse()需要一个字符串,就我而言,我已经将年月日作为整数。我想验证月/日/年组合。例如2月30日。
在新的DateTime(int,int,int)周围进行try / catch很容易,但是我想知道是否有一种不依赖异常的方法。
我也会觉得很愚蠢地将这些int组成一个字符串,然后使用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);
}
Run Code Online (Sandbox Code Playgroud)
如果需要使用其他日历系统,请按如下所示进行扩展:
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);
}
Run Code Online (Sandbox Code Playgroud)