2017-12-04 6 views
1

時間を適切な文化的フォーマットでフォーマットするにはC#を使いたいと思います。CultureInfoを使用して12時間または24時間の時間を取得する方法(日付なし)

たとえば、現在のカルチャがen-USの場合は、午後1時に表示したい場合、現在のカルチャがfr-FRの場合は13:00を表示します。私はただの時間が欲しい、私はその日が欲しくない。

//timeOfDay is a DateTime object. 

//This will return the 12 hour clock regardless of culture: 
time = timeOfDay.ToString("h:mm tt", CultureInfo.CurrentCulture); 
//This will return the 24 hour clock regardless of culture 
time = timeOfDay.ToString("H:mm tt", CultureInfo.CurrentCulture); 
//This will return the correct clock for the culture, but the date will also be present 
time = timeOfDay.ToString(CultureInfo.CurrentCulture); 

(それがあるべきとしてフランスで、それは、空白である)「TT」はAM/PMのためであり、それは文化的に敏感であることに注意してください。

日付なしで現在のカルチャに適した時計の形式を取得するにはどうすればよいですか?

+0

https://docs.microsoft.com/en-us/dotnet([標準日付と時刻のフォーマット文字列]をご覧ください/標準/基本型/標準日時フォーマットの文字列)。 – ckuri

+0

'.ToShortTimeString()'を試しましたか?これで満足できない場合は、 'DateTimeFormatInfo'で作業できます。https://docs.microsoft.com/en-us/dotnet/api/system.globalization.datetimeformatinfo?view=netframework-4.7.1 – Jasen

+0

@Jasen ToShortTimeString()は機能し、他のメソッドよりも簡潔です。あなたがそれを答えるなら、私はそれを受け入れるとマークします。ありがとうございました! – ORcoder

答えて

0

明示する必要がない場合は、.ToShortTimeString()を使用して、システムにフォーマットを決定させることができます。

https://msdn.microsoft.com/en-us/library/system.datetime.toshorttimestring(v=vs.110).aspx

ToShortTimeStringメソッドによって返される文字列は、培養に敏感です。これは、現在のカルチャのDateTimeFormatInfoオブジェクトによって定義されたパターンを反映します。たとえば、en-US文化の場合、標準短時間パターンは"h:mm tt"です。 de-DE培養については、"HH:mm"である。 ja-JP文化の場合は"H:mm"です。特定のコンピュータの特定の書式文字列は、標準の短い書式文字列とは異なるようにカスタマイズすることもできます。

強調は私のものです。


編集は、このユースケースのために実証する:

//ToShortTimeString automatically uses current culture to show hour:minute 
string time = timeOfDay.ToShortTimeString(); 
-1

私はその文化に基づいて(あなたの文字列が異なるフォーマットを持っているので)、異なるCurrentCulture情報やフォーマットtimeOfDayをチェックするために、他のオプションが表示されません。

if (CultureInfo.CurrentCulture == new CultureInfo("en-US")) 
{ 
    time = timeOfDay.ToString("h:mm tt", CultureInfo.CurrentCulture); 
} 

if (CultureInfo.CurrentCulture == new CultureInfo("fr-FR")) 
{ 
    time = timeOfDay.ToString("HH:mm", CultureInfo.CurrentCulture); 
} 
+0

@Downvoterは少なくとも私が間違っているかもしれないところを見ることができるようにコメントすることを心配していますか? –

0

これは動作するようです:

string time = timeOfDay.ToString(CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern, CultureInfo.CurrentCulture); 

2番目のパラメータは同様におそらく不要です。

関連する問題