テキストボックスに入力された、日付っぽい文字列を日付型の変数へ代入する方法です。

ま、そもそも、コントロールをDateTimePickerなど、日付型にマッチしたコントロールを使え
って話もありますが、まぁまぁ、いろんなケースがあるということで・・・

2種類のパターンを知っておくとよいです。
Parse と ParseExact です

 "20080409"
 "2008/04/09"
 この2つをみて、感覚的に 2008年4月9日 だな・・
 と、想像できるのは、日本で暮らしているから。ということですね。
 日本語的に日付ですという情報を渡さなければならない場合にParseExactを使います。
ということで、例

string   s1  = "2008/04/09";

DateTime dt1 = DateTime.Parse(s1);

 

string   s2  = "20080409";

DateTime dt2 = DateTime.ParseExact(s2, "yyyyMMdd", DateTimeFormatInfo.CurrentInfo);

 

ウォッチ ウィンドウの値

+                          dt1         {2008/04/09 0:00:00}         System.DateTime

+                          dt2         {2008/04/09 0:00:00}         System.DateTime

.NET Framework 2.0 からは、TryParse も使えます。TryParseExactもちゃんと用意されてますね。

string   s3  = "2008/04/31";

DateTime dt3;

if (DateTime.TryParse(s3, out dt3) == false)

{

    Console.WriteLine(s3 + "は日付のデータではありません");

}

 

string   s4  = "20080431";

DateTime dt4;

if (DateTime.TryParseExact(s4, "yyyyMMdd", DateTimeFormatInfo.CurrentInfo, DateTimeStyles.None, out dt4) == false)

{

    Console.WriteLine(s4 + "は日付のデータではありません");

}

 

実行結果

2008/04/31は日付のデータではありません

20080431は日付のデータではありません


ウォッチ ウィンドウの値

+                          dt3         {0001/01/01 0:00:00}         System.DateTime

+                          dt4         {0001/01/01 0:00:00}         System.DateTime

TryParseExact の第四引数の、DateTimeStyles の使い方もチェックですね。

あ。OSのロケール設定が日本語以外の場合、このコードだと違う結果になりますのでご注意を

なお、DateTimeFormatInfo は、System.Globalization 名前空間 にあるので、using 忘れにご注意を