我在格式化DateTime对象时遇到一些问题,因此只显示完整的小时数。例如,如果我有以下DateTime:
? StartTime
{7/25/2011 8:00:00 AM}
我想将其打印为“上午8点”。格式化也应遵循当前文化的规则,因此在其他国家/地区,上述示例可以打印为“8”。下午4点将显示为16。
我没有找到任何内置的格式化程序来执行此操作,因此我考虑编写一些静态方法来处理问题。我需要以正确的格式(单个或两个数字)和给定小时的字符串指示符获取小时数。字符串指示符使用ToString(“tt”)很容易,如果当前文化使用24h格式,则正确返回空。所以我在那里。
但是后来我被卡住了,因为CultureInfo的DateTimeFormatInfo似乎没有告诉我是否应该用一位或两位数字来显示小时数(h vs H)。
有什么想法吗?
答案 0 :(得分:4)
我认为您可以将 hh 格式与 tt 结合使用。
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
更新:
我认为Get just the hour of day from DateTime using either 12 or 24 hour format as defined by the current culture为您提供了如何根据CultureInfo显示小时数的答案(12小时或24小时)。
答案 1 :(得分:1)
(添加另一个答案,因为我的移动连接无法进行编辑。)
好的,如果你已经知道文化是否使用am / pm指示符,那么 也会告诉你是否使用h
或H
- 你不要如果没有指示符,我想使用h
,因为这是不明确的(“8”可能意味着“上午8点”或“晚上8点”)。
所以要么使用h tt
或%H
,具体取决于确定是否有am / pm指示符的结果。