2013-04-09 18 views
8

私はこの問題を完全に克服しています。限り、私はドキュメントと他の記事を参照してくださいすることができますので、これは動作するはずだと読んでいる。私は何か愚かな行方不明にする必要がありますが、私はそれを見ることができません。DateTime.ParseExact FormatException文字列が有効なDateTimeとして認識されませんでした

「文字列が有効なDateTimeとして認識されませんでした」というメッセージでFormatExceptionが発生します。次のコード行に:

return DateTime.ParseExact(value, DateFormat, null, 
          DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal); 
  • value"11/04/2013"
  • DateFormatある現在の文化は私がDateTimeStylesのが、効果なしに、様々なバリエーションを試してみたen-GB
  • ある"dd/MM/yyyy"
  • です。

私の本来の目的は、形式ddd, dd/MMM/yyyyのためだったが、それはうまくいきませんでしたどちらか(そのインスタンスの値がTue, 30/Apr/2013た)

は私もnew CultureInfo("en-GB")に渡すことによって、エンGBに文化を強制的に試してみました代わりに、私はまた、環境に関する異なるがあったかどうかを確認するために、自身のコンソールアプリケーションにコードを抽出null

(ASP.NET MVC 3)

using System; 
using System.Collections.Generic; 
using System.Globalization; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var DateFormat = "dd/MM/yyyy"; 
      var value = "30/04/2013"; 
      var culture = new CultureInfo("en-GB"); 
      var result = DateTime.ParseExact(value, DateFormat, culture, 
          DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal); 
      Console.WriteLine("\"{0}\" as \"{1}\" ==> {2}", value, DateFormat, result); 
      Console.ReadKey(); 
     } 
    } 
} 

それでも私には同じエラーが表示されます。いくつかの文化以外のセパレータを使用しているため

+2

コンソールアプリケーションが私に役立ちます。私のマシンのデフォルトの文化: "de-DE" –

+0

私の同僚のうちの2人は、彼らのためにもうまくいっていると言います。しかし、私のマシンは違うように頼みます。私のインストールが壊れている可能性があります。どのように - 他のコードが正常に動作しているかわかりません。 –

+2

マシン上の 'Thread.CurrentThread.CurrentCulture'と' Thread.CurrentThread.CurrentUICulture'の値は何ですか? –

答えて

7

この作業は

string myDate = "30-12-1899 07:50:00:AM"; 
DateTime dt1 = DateTime.ParseExact(myDate, "dd-MM-yyyy hh:mm:ss:tt", 
              CultureInfo.InvariantCulture) 
+0

不変の文化を設定することができました。理由は分かりませんが、うまくいきました。 –

4
string myDate = "30-12-1899 07:50:00:AM"; 
DateTime dt1 = DateTime.ParseExact(myDate, "dd-MM-yyyy HH:mm:ss:tt", 
              CultureInfo.InvariantCulture); 

注HH(24時間)よりもむしろHH(12時間制)の使用、及びにInvariantCultureを使用していスラッシュ。

たとえば、文化がde-DEの場合、 "dd/MM/yyyy"という形式では、区切り記号(31.01.2011)としてピリオドが使用されます。

関連する問題