3

以下のコードを使用するときに、フォーマットに日付文字列がdd-MMM-yyyyあり、これをに変換したいdatetime

DateTime.ParseExact("20-Oct-2012", "yyyy-MM-dd HH:mm tt", null) 

それはエラーを引き起こします

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

上記のコードを変更すると

DateTime.ParseExact("20-Oct-2012", "dd-MMM-yyyy", null) 

mm/dd/yyyy次に、形式 ( )で日時を取得しました。10/20/2012 12:00:00 AM

しかし、フォーマットに変換する必要がありyyyy/mm/ddます。この点で私を助けてください。

4

3 に答える 3

6

これを試してみてください

DateTime.ParseExact("20-Oct-2012", "dd-MMM-yyyy", null).ToString("yyyy/mm/dd")

フォーマットの詳細については、これを確認してください

于 2012-10-20T10:31:25.590 に答える
1

元の文字列を抽象DateTime表現に解析することと、後者を別の文字列表現に変換することです。

あなたのコードでは、前者にのみ取り組んでおり、ToString()(システムの現在のロケールを使用する) 暗黙的なメソッド呼び出しに依存して、文字列に変換し直しています。出力形式を制御したい場合は、明示的に指定する必要があります。

// Convert from string in "dd-MMM-yyyy" format to DateTime.
DateTime dt = DateTime.ParseExact("20-Oct-2012", "dd-MMM-yyyy", null);

// Convert from DateTime to string in "yyyy/MM/dd" format.
string str = dt.ToString("yyyy/MM/dd");

mmまた、書式指定子は分を表すことに注意してください。月は で表されMMます。

編集:「変換された日付には値「10/20/2012 12:00:00 AM」が含まれています。」それが何を意味するのか注意してください。構築された値には、形式に依存DateTimeしない、解析された日付と時刻の抽象表現が含まれます。

ただし、表示するには、文字列表現に戻す必要があります。デバッガーで変数を表示すると (おそらく行っているように)、Visual Studio は でパラメーターなしのToString()メソッドを自動的に呼び出しDateTime、現在のカルチャで日付と時刻をレンダリングします (この場合、US カルチャを想定しています)。

ToString(string)カスタム形式で日付と時刻をレンダリングするようにこの動作を変更するには、上記の例で示したように、オーバーロード (または他のオーバーロードのいずれか)を明示的に呼び出す必要があります。

于 2012-10-20T10:34:34.280 に答える
0

代わりにこれを試すことができます:

Convert.ToDateTime("20-Oct-2012").ToString("yyyy/MM/dd")

これが役立つことを願っています!!

于 2012-10-20T10:35:36.103 に答える