4

文字列の値は、 「 2012年4月10日」のような「 dd / MM/yyyy」形式です。これは、 OSの現在の文化に関する日付に変換する必要があります。

日付形式がyyyy-MM-ddであるOSの現在の文化として韓国語で以下の文字列を試しました。私のコードは正しい月の値を取得していません。月の値を日と交換します。

入力:「2012年4月10日」出力:2012-04-10

コード:

DateTime DT;
string dt = "04/10/2012";

DateTimeFormatInfo DateInfo = CultureInfo.CurrentCulture.DateTimeFormat;
DT = Convert.ToDateTime(String.Format ("{0:"+DateInfo .ShortDatePattern +"}", dt.Trim ()), CultureInfo .CurrentCulture);
MessageBox.Show("Date: " + DT.ToShortDateString());

どうすれば修正できますか?

4

4 に答える 4

7

固定形式で解析する必要があるように見えます。現在、「dd/MM/yyyy」以外の形式で解析していると思います。日付があいまいであるためです (月と日を交換できるように)無効な日付を発生させずに) 形式は単に月と日の値を切り替えるだけです。それを出力すると、反転して見えます。

構文解析形式を強制するために使用DateTime.ParseExactし、組み込みの現在のカルチャに依存する文字列出力メソッドを使用しDateTimeて、書式設定された文字列を取得します。

var date = DateTime.ParseExact("04/10/2012", "dd/MM/yyyy", CultureInfo.InvariantCulture);

MessageBox.Show("Date: " + date.ToShortDateString()); // Assumes current culture is controlling format
于 2012-10-04T08:04:48.603 に答える
2

入力文字列は固定形式であるため、その形式で解析する必要があります。

DateTime.ParseExact(dt, "dd/MM/yyyy", CultureInfo.InvariantCulture);
于 2012-10-04T08:05:18.783 に答える
1

文字列にフォーマットがある場合dd/MM/yyyyDateTime.ParseExact指定されたフォーマットで使用する必要があります。

DateTime.ParseExact(dt, "dd/MM/yyyy", CultureInfo.InvariantCulture);

それ以外の場合は、現在の文化のルールに従って文字列を解釈しようとします-これは、あなたが見つけたように失敗します.

于 2012-10-04T08:06:27.420 に答える