2011-07-25 4 views
1

可能性の重複:
Get just the hour of day from DateTime using either 12 or 24 hour format as defined by the current cultureC#DateTime書式設定:フル時間だけを表示する方法。午後2時?

唯一のフル時間が表示されているように、私は私のDateTime - オブジェクトをフォーマットいくつかの問題を抱えています。たとえば、次のDateTimeを持っている場合:

? StartTime 
{7/25/2011 8:00:00 AM} 

「8 AM」として印刷したいと思います。書式設定は現在の文化の規則にも従うべきです。したがって、他の国では、上記の例は "8"と表示されます。午後4時には16と表示されます。

これを行う組み込みフォーマッタが見つかりませんでしたので、問題を処理する静的メソッドを作成することを考えました。私は正しい形式(1桁または2桁)と指定された時間の文字列指定子で時間を取得する必要があります。文字列指定子はToString( "tt")で簡単です。これは、現在のカルチャが24時間形式を使用している場合、空白を正しく返します。だから私は半分そこにいる。

しかし、CultureInfoのDateTimeFormatInfoは、1桁または2桁の数字を表示する必要があるかどうかわからないようです(h対H)。

アイデア?

答えて

4

私はあなたが TTと組み合わせる HH形式を使用することができると思います。

DateTime x = new DateTime(2011,10,10,08,00) 
Console.WriteLine(x.ToString("h tt")); // Output: '8 AM' 

x = new DateTime(2011,10,10,16,08,00) 
Console.WriteLine(x.ToString("h tt")); // Output: '4 PM' 

http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#Y16327

UPDATEを見ている:

を私はGet just the hour of day from DateTime using either 12 or 24 hour format as defined by the current cultureはあなたのCultureInfo(12または24時間)に応じた時間を表示するためにどのように答えを与えると思います。

+0

+1:完璧です。あなたは 'h'ここに' x.ToString( "h tt") ' – naveen

+0

だけを更新する必要がありますが、それは彼が探しているものかどうかまだ分かりません。 – jules

+0

ああ!私は質問を正しく読まなかった。私の悪い – naveen

1

(私のモバイル接続が編集のために失敗しているとして、別の答えを追加する。)

さて、あなたはすでにhを使用するかどうかを確認できますことを、文化は午前/午後の指定子を使用するかどうかを知っていればまたはH - 指定子がない場合はhを使用したくない場合は、あいまいです(「8」は「8 am」または「8 pm」を意味する可能性があります)。午前/午後の指定子かどうかがあるのか​​どうかを判断した結果に応じて、

ので使用h ttまたは%Hのいずれか。

関連する問題