2012-05-01 5 views
2

、TryParseが失敗したとして、有効なDateTimeの文字列を認識します。 日付文字列は、それに接続されている曜日がある場合

DateTime d; 
string dateString = "Tuesday May 1, 2012 9:00 AM"; 
return DateTime.TryParse(dateString, out d); // returns false 

このように、私に対処するための最良の方法は何ですか

それは安全に日付だと判断し、さらにそのようなものに変換できますか?

答えて

4

あなたが探しにどのような形式TryParseExactを伝える必要があります:

DateTime d; 
string dateString = "Tuesday May 1, 2012 9:00 AM"; 
return DateTime.TryParseExact(
    dateString, 
    "dddd MMMM d, yyyy h:mm tt", 
    System.Globalization.CultureInfo.CurrentCulture, 
    System.Globalization.DateTimeStyles.None, 
    out d 
); 
+0

複数の可能な日付形式がある場合、私はそれぞれTryParseExactする必要がありますか? – ErikE

+0

可能なフォーマットの配列を指定できるもう1つのオーバーロードがあり、それが動作するまですべてのフォーマットを試します。 –

+0

ああ!ありがとうございました。 – ErikE

1

これはトリックを行う必要があります:)

 // Parse date and time with custom specifier. 
     string dateValue = "Tuesday May 1, 2012 9:00 AM"; 
     string pattern = "dddd MMMM d, yyyy h:mm tt"; 

     DateTime parsedDate; 

     if (DateTime.TryParseExact(dateValue, pattern, null, 
           DateTimeStyles.None, out parsedDate)) 
      Console.WriteLine("Converted '{0}' to {1:d}.", 
           dateValue, parsedDate); 
     else 
      Console.WriteLine("Unable to convert '{0}' to a date and time.", 
           dateValue); 

リファレンス http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx http://msdn.microsoft.com/ en-us/library/8kb3ddd4.aspx

関連する問題