4

YYYYDDMM 形式の文字列として保存されている日付があります。その値を「MM/DD/YYYY」形式で表示したいと思います。私はc#でプログラミングしています。私が使用している現在のコードは次のとおりです。

txtOC31.Text = dr["OC31"].ToString().Trim();
strOC31date = dr["OC31DATE"].ToString().Trim();
DateTime date31 = DateTime.Parse(strOC31date);
strOC31date = String.Format("{0:MM/dd/yyyy}", date31);

ただし、YYYYMMDD 文字列 (strOC31date) が有効な日時として認識されないため、エラーが発生します。

4

4 に答える 4

20

例を使用した DateTime.ParseExact

string res = "20120708";
DateTime d = DateTime.ParseExact(res, "yyyyddMM", CultureInfo.InvariantCulture);
Console.WriteLine(d.ToString("MM/dd/yyyy"));
于 2012-08-07T14:31:06.510 に答える
11

解析しようとしている文字列が標準形式のいずれでもない場合は、ParseExact()( MSDN )を使用します。これにより、カスタム形式を解析できるようになり、効率がわずかに向上します (こちらのブログ投稿で比較しています)。

DateTime date31 = DateTime.ParseExact(strOC31date, "yyyyMMdd", null);

nullフォーマット プロバイダーの受け渡しはデフォルトDateTimeFormatInfo.CurrentInfoで安全ですが、代わりにインバリアント カルチャが必要になる場合があります。

DateTime date31 = DateTime.ParseExact(strOC31date, "yyyyMMdd", DateTimeFormatInfo.InvariantInfo);

その後、コードが機能します。

于 2012-08-07T14:28:06.370 に答える
3

パラメータの 1 つとして format を取るメソッドをDateTime.Parse(strOC31date);使用する代わりに。DateTime.ParseExact()

于 2012-08-07T14:27:44.860 に答える
3

メソッドDateTime.ParseExactが必要です。

DateTime date31 = DateTime.ParseExact(strOC31date, "yyyyddMM", CultureInfo.InvariantCulture);
于 2012-08-07T14:28:23.577 に答える