2016-04-25 4 views
-3

dd/MM/YYYYの書式設定された文字列の日付をYYYY-MM-dd datetimeに変換します。しかしそれは私に戻りますdd/MM/YYYY形式の文字列の日付をYYYY-MM-dd datetimeに変換するにはどうすればよいですか?

"文字列が有効なDateTimeとして認識されませんでした。"

"04/26/2016"文字列をyyyy-MM-dd datetime形式に変換するにはどうすればよいですか?

DateTime dt = DateTime.ParseExact("04/26/2016", "yyyy-MM-dd", CultureInfo.InvariantCulture); 
Console.WriteLine(dt); 
+4

'ParseExact(" 04/26/2016 "、" yyyy-MM-dd "' < - エラーを見つけますか? –

答えて

9

日付を含む文字列を間違った方法で解析します。 あなたはする必要があります

DateTime dt = DateTime.ParseExact("04/26/2016", "MM/dd/yyyy", CultureInfo.InvariantCulture); 
Console.WriteLine(dt.ToString("yyyy-MM-dd")); 
+0

それはまったく間違っています。 '-'と'/'はうまく一致しません。 –

+0

OPの 'CurrentCulture' _might_は' Calendar'プロパティとして 'GregorianCalendar'を使わないので、' ToString'メソッドで 'InvariantCulture'を使うのが大好きです。そのような場合、この 'ToString'メソッドは' 2016-04-16'とは異なる結果を生成します。 –

2

明らかに、フォーマットと文字列は完全に一致しません。 〜からdocumentation;

指定した日付と時刻の文字列表現を 相当のDateTimeに変換します。 文字列表現の形式は、 が指定された形式と正確に一致する必要があります。または例外がスローされます

代わりにMM/dd/yyyy形式を使用する必要があります。

DateTime dt = DateTime.ParseExact("04/26/2016", "MM/dd/yyyy", CultureInfo.InvariantCulture); 

そして、あなたはそれだけのようなToStringメソッドを使用し、yyyy-MM-dd形式の文字列表現です取得したい場合。

Console.WriteLine(dt.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)); 

カスタムの日付形式としては、YYYYがありません。これらの指定子では大文字と小文字が区別されるため、代わりにyyyy format specifierを使用してください。

1

このよう

DateTime dt = DateTime.ParseExact("04/26/2016", "MM/dd/yyyy", CultureInfo.InvariantCulture); 
Console.WriteLine(dt.ToString("yyyy-MM-dd")); 
+0

あなたは構文解析に間違ったフォーマットを使用していますが、番号26の月はありません –

+0

@PatrickHofman最初のリビジョンでは 'dd/MM/yyyy'のようでしたが、OPはそれをすぐに変更してからリビジョンとして見ませんでした。今okey。 –

+0

それは間違っていた、おそらく答えが編集された –

2

技術を試してみて、あなただけのいくつか文字列操作行うことができます。

String source = "04/26/2016"; 
String result = String.Join("-", source.Split('/').Reverse()); 

をしかし、DateTime.ParseExactはより良いソリューションです:

String result = DateTime 
    .ParseExact(source, "MM/dd/yyyy", CultureInfo.InvariantCulture) 
    .ToString("yyyy-MM-dd", CultureInfo.InvariantCulture); 
関連する問題