2017-02-13 5 views
0

の初めに、私はのDateTime ParseExactメソッド「」文字列

DateTime day = DateTime.ParseExact(d, "M/d/yyyy", 
System.Globalization.CultureInfo.InvariantCulture); 

を使用していますが、それは私が他のすべてに目を通してきたFormatException

「有効なDateTimeとして認識されません文字列を」投げています質問は、ParseExactを扱うと私は、文字列dがそれの前に「\」を持ち、「余分で終わることに気づい

...私の食い違いがどこにあるかを把握することができていない 以下を参照してください。 enter image description here

は、私はそれらの余分な文字がどこから来ていることを確認していないが、正確な故障解析を行うには、彼らに何かかなり確信しています。

+1

デバッガ出力の読み方を知るにはちょっと重要です。クイックウォッチウィンドウにテキストビジュアライザー、スパイグラスアイコンを使って練習しましょう。これで文字列に余分な二重引用符が含まれていることがわかりました。 TextFieldParserクラスは正しい解決策になりがちですが、どこから来たかによって異なります。良いスニペットではなく、わかりません。 –

答えて

2

スラッシュはありません。それらは二重引用符のためのエスケープです。

var day = DateTime.ParseExact(d.Trim('"'), "M/d/yyyy", 
           CultureInfo.InvariantCulture); 
0

私は大手を取り除くと \末尾取得する

d = d.Substring(1, d.Length - 2); 

を使用した「私の文字列から。

機能がうまく働いた後。\はどこまだわからない」でから来ていました今回。

+1

'd'がどのように初期化されたかを見て、余分な二重引用符がどこから来たのか把握するために後方に作業してください。 – mason

1

unescapeの文字列が必要なようです。

サンプル:

var d = "\"8/1/2016\""; 
var escapedString = d.Replace(@"""", string.Empty); 
DateTime day = DateTime.ParseExact(escapedString, @"M/d/yyyy", System.Globalization.CultureInfo.InvariantCulture);