2012-03-01 12 views
7

今日私は本当に奇妙な問題を抱えています。DateTime.Parseは今日(2012年3月1日)失敗します! o_0

は、このC#のコードを実行してください:もちろん

class Program 
{ 
    static void Main(string[] args) 
    { 

     string yesterdayString = (DateTime.Now - TimeSpan.FromDays(1)).ToString("R"); 
     string nowString = DateTime.Now.ToString("R"); 

     DateTime.Parse(yesterdayString); 
     DateTime.Parse(nowString); 

     DateTime.Parse("Wed, 29 Feb 2012 18:05:49 GMT"); // this is what i have in yesterdayString 
     DateTime.Parse("Thu, 01 Mar 2012 18:05:40 GMT"); // this is what i have in nowString 
    } 
} 

あなたはちょうど今日のために問題を取得します。問題の内容を知らせるために最後の2つのコマンドを追加しました。 明日と3月のDateTime.ParseはFormatExceptionをスローします(文字列は有効なDateTimeとして認識されませんでした)。

なぜですか?

+1

をご覧ください。 – DaveShaw

+1

.NET 4.0、FWIWでうまく動作します。 –

+0

あなたのコードは私のために働く。 – BlueM

答えて

2

私はあなたがバグを見つけたと言います。これは動作するはずです:これはバグであることが確認され

// 
var spanish = CultureInfo.GetCultureInfo("es"); 
var date = DateTime.Parse(DateTime.Now.ToString("R", spanish), spanish); 

か、それはまだスローイタリアのための

...

var italian = CultureInfo.GetCultureInfo("it"); 
var date = DateTime.Parse(DateTime.Now.ToString("R", italian), italian); 
+1

日時パーザは、イタリアとスペインの3月の月が好きではないようです。あなたのソリューションは私にとってはうまくいきません。 ps .. 私は答えを与えることはできません..私はあなたにヒントを与えます: DateTime.Parse(nowString、CultureInfo.GetCultureInfo( "en")); –

+0

@ user846168:それは解決策ではなく、むしろコメントのための大きな答えです。だから私はそれをCWと記しています。 –

2

あなたはこのトピックに関するより多くの情報が必要な場合は、私はLinqpadを通してそれを実行すると、このコードが動作するhttp://connect.microsoft.com/VisualStudio/feedback/details/822536/datetime-parse-result-in-exception-when-the-format-is-rfc1123-pattern-and-locale-is-a-latin-one

+0

これはそれです、私は今日同じ問題を抱えていました。おそらくスペイン語でMarch = Marzoなので、RFC1123標準では "。"ロケールにいるときに "。Mar"を解決できず、このバグを回避する方法を知らないので、 "won" t fix "(* facepalm *) – dbalboa

関連する問題