C#を使用して文字列が有効な年かどうかを確認する最良の方法は何ですか?
現在、{'All','2009','2008'} などの値を含むドロップダウン リストがあり、選択が日付の 1 つなのか 'All' フィールドなのかを知りたいです。
現在、私はチェックしていますbool isYearValid = (Year.ToLower() == "all") ? false : true;
値が有効な年かどうかを確認するにはどうすればよいですか?
年は単純に有効な数値である必要があるため、int32.TryParse を使用して、その年をどの範囲に入れたいかに基づいて範囲を確認するだけです。
年を整数として解析してみることができます。
int iYear = 0;
if (Int.TryParse(Year, out iYear))
{
//You have a valid year inside iYear
//If you are not sure about the dropdown list values,
//you can of course do more checks for validity. For example:
//if iYear is in a proper range
}
あなたが使用することができます:
DateTime dateTime;
var year = ...
DateTime.TryParse(string.Format("1/1/{0}", year), out dateTime);
むしろこれでいいんじゃない?
bool isYearValid = !string.Equals(Year, "all", StringComparison.OrdinalIgnoreCase);
どうですか:
<asp:ListItem Value="1900" Text="All" />
そうすれば、検証ポイントで「すべて」を手動で確認する必要がなくなります。これを実際に実装するときは、まだ 1900 を確認する必要がありますが、とにかく、それを特別なシナリオにすることを回避する方法が確実にあるはずです。
それ以外はDateTime.TryParse
、文字列表現が有効な日付であるかどうかを確認する適切な方法です。