2011-12-29 56 views
3

我知道我們可以執行以下操作來顯示AM PM的時間。c#時間顯示AM PM

String.Format("{0:t}", dt); // "4:05 PM" 

如果我想爲AM顯示A和爲PM顯示P,該怎麼辦?有沒有格式?

+0

使用格式,然後使用沒有最後一個字母的子字符串? – jclozano 2011-12-29 22:46:58

+5

在上面的示例代碼中,「{0:t}」實際顯示了所需的結果。 「{0:tt}」會顯示「AM」或「PM」。 – MrUpsideDown 2014-08-04 04:32:32

回答

6

另一個解決方案是使用System.Globalization.DateTimeFormatInfo類,它允許您指定要如何格式化您的AM/PM:

DateTimeFormatInfo timeFormat = new DateTimeFormatInfo(); 
timeFormat.ShortTimePattern = CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern; 
timeFormat.AMDesignator = "A"; 
timeFormat.PMDesignator = "P"; 

// Both of these are the same: 
string a = DateTime.Now.ToString("t", timeFormat); 
string b = String.Format(timeFormat, "{0:t}", DateTime.Now); 

你可以完全自定義的東西,用它:

timeFormat.AMDesignator = "cookies"; 
timeFormat.PMDesignator = "bagels"; 

下午4:05的示例輸出:

4:05 bagels 
2

使用 「T」:

Console.Out.WriteLine("date1 = {0:hh:mm:ss.F t}", DateTime.Now); 
// date1 = 12:49:35.4 A 

(上http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#tSpecifier更多細節)

+0

我會回滾編輯...雖然它複製了鏈接中的示例,但您提供了答案的要點而不讓我去查看它。 ;) – IAbstract 2011-12-29 22:53:02

+0

我更改了示例代碼:) – 2011-12-29 22:57:50

-1

不知道,但你很可能? String.Format()。IndexOf(「AM」)> 0? 「A」:「P」

+0

太難以管理,並且不像@the_joric演示的示例那樣具有文化友好性。 – IAbstract 2011-12-29 22:50:39

+0

同意..雖然沒有意識到格式 – Shankar 2011-12-29 22:54:58

3

你試過

String.Format("{0:h:mm t}", DateTime.Now)