日、月、年の 3 つの文字列/整数があります。それらが有効な DateTime 形式であるかどうかを確認する方法はありますか? ASP.NET を使用しています。
ユーザーが登録するとき、彼は月、日、年を入力します。
以前は 3 つの変数を文字列に変換し、それが正当かどうかを tryParse で確認していましたが、唯一の問題は、同じプロジェクトを別のマシンで実行することです。マシンによっては異なる日付形式が使用されているためです。
これはどう:
private bool IsValidDate(int year, int month, int day)
{
if (year < DateTime.MinValue.Year || year > DateTime.MaxValue.Year)
return false;
if (month < 1 || month > 12)
return false;
return day > 0 && day <= DateTime.DaysInMonth(year, month);
}
day、month、yearを 3 つの個別の int として既に持っている場合は、それらを文字列に入れて DateTime として再解析する代わりに、DateTime のコンストラクターの 1 つを直接使用できます。
DateTime mydate;
myDate = new DateTime(year, month, day);
ArgumentOutOfRangeException
日付が無効な場合はがスローされるため、これを try/catch ブロックでラップcatch(ArgumentOutOfRangeException e)
し、日付の形式が有効でない場合はブロックを使用してロジックを管理する必要があります。