[C#] TryParse での日付 (yyyymmdd) チェック
TryParse メソッドを使用した日付チェックでは、元の文字列に注意を払わなければならない。
"2014.01.01"
"2014-01-01"
"2014/01/01"
"2014年01月01日"
しかし、データでよくありがちな "yyyymmdd" は許容されずに弾かれてしまう。
この場合、文字列を分解して上記のような形式に直すのもいいが、DateTime.TryParseExact でパターンを指定することでチェックが行える。DateTimeStyles 列挙体が必須になるが、特に指定がなければ DateTimeStyles.None としておく。
DateTime.TryParse メソッド
http://msdn.microsoft.com/ja-jp/library/ch92fbc1(v=vs.110).aspx
DateTime.TryParseExact メソッド
http://msdn.microsoft.com/ja-jp/library/system.datetime.tryparseexact(v=vs.110).aspx
DateTimeStyles 列挙体
http://msdn.microsoft.com/ja-jp/library/91hfhz89(v=vs.110).aspx
string s = "20140101"; DateTime d1, d2; bool res1 = DateTime.TryParse(s, out d1); bool res2 = DateTime.TryParseExact(s, "yyyymmdd", null, DateTimeStyles.None, out d2); // False Debug.WriteLine(res1.ToString()); // True Debug.WriteLine(res2.ToString());DateTime.TryParse では、以下のようなパターンの文字列であれば日付として許容される。
"2014.01.01"
"2014-01-01"
"2014/01/01"
"2014年01月01日"
しかし、データでよくありがちな "yyyymmdd" は許容されずに弾かれてしまう。
この場合、文字列を分解して上記のような形式に直すのもいいが、DateTime.TryParseExact でパターンを指定することでチェックが行える。DateTimeStyles 列挙体が必須になるが、特に指定がなければ DateTimeStyles.None としておく。
DateTime.TryParse メソッド
http://msdn.microsoft.com/ja-jp/library/ch92fbc1(v=vs.110).aspx
DateTime.TryParseExact メソッド
http://msdn.microsoft.com/ja-jp/library/system.datetime.tryparseexact(v=vs.110).aspx
DateTimeStyles 列挙体
http://msdn.microsoft.com/ja-jp/library/91hfhz89(v=vs.110).aspx