元の文字列を抽象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)
カスタム形式で日付と時刻をレンダリングするようにこの動作を変更するには、上記の例で示したように、オーバーロード (または他のオーバーロードのいずれか)を明示的に呼び出す必要があります。