2012-04-28 10 views
1

フォーマットを使用してDateTimeオブジェクトを文字列に変換しようとしていますが、奇妙な理由によりAM/PMは無視されます。それは、オブジェクトの時間の大きさを取るだけです。ちょうどそれを試してみることにしたかったDateTime形式の文字列への変換は、AM/PMを無視します

StartDate.ToString("yyyy-MM-dd hh:mm:ss.fff"); 

String.Format("0:yyyy-MM-dd hh:mm:ss.fff", StartDate); 

私は2つの間に違いがあるとは思わない、しかし:

私は次の形式を使用しています。値を渡した場合2012/04/28 6:00:00 AMまたは2012/04/28の場合、結果は同じ"2012-04-27 06:00: 00.000 "

+0

サイドノート:これはWPFとは関係ありません。 –

+0

@Jon、タグを削除しました。ありがとうございます。 –

答えて

4

12時間表示のhhを使用しました。 24時間制のHHが必要です。

カスタムフォーマット文字列の詳細については、MSDNを参照してください。あなたは本当に時間の区切りは、現在のカルチャに依存する場合を除き、インバリアントカルチャを指定したい場合があり

注:

string formatted = StartDate.ToString("yyyy-MM-dd HH:mm:ss.fff", 
             CultureInfo.InvariantCulture); 

(あなたがしている場合は、中括弧を持つべきではないことに注意してくださいToStringにフォーマット文字列を渡す。私は、これが問題になっているだけのタイプミスだったと仮定します。)

を使用すると、AM/PMを生成するためにフォーマット文字列でttを使用し、は12時間時計を使用したい場合指定子。

+0

ありがとうジョン、私のために働いた。私はCultureInfoを渡す必要はありません。私はUIでこの日付を表示していませんが、ストアドプロシージャの実行にSSRSのパラメータとして渡します。はい、中括弧はタイプミスでした、私はそれを修正します。私はちょうど今のところWPFでネイティブのDateTimePickerコントロールがないことに失望しています。 –

+1

@ ShaktiSingh: 'CultureInfo.InvariantCulture'を明示的に渡すというのは、現在のユーザー固有の文化を使って回避することです。 –

関連する問題