まあ、月で有効な範囲を知っているので、手動で制限することができます。年は明らかに通常の意味では制約されませんが、代わりDateTime
に実際に保持できる量 (0001 から 9999) によって制限されます。
日数には、DaysInMonth(int year, int month)
指定した月の最大日数を教えてくれる方法があります。これで閏年もわかります。
この情報を使用して、提供された整数に基づいて範囲をチェックする独自のメソッドを作成できます。
何かのようなもの:
public static bool AreValidDateValues(int year, int month, int day)
{
if (month < 1 || month > 12)
return false;
if (year < DateTime.MinValue.Year || year > DateTime.MaxValue.Year)
return false;
var days = DateTime.DaysInMonth(year, month);
if (day < 1 || day > days)
return false;
return true;
}
または、それが気にならない場合は、生の値を日付の文字列表現に変換しDateTime.TryParse
、それを に入れます。これにより、提供された文字列の true/false が得られます。カルチャに依存した解析には注意してください。