C# C日期时间格式:如何仅显示完整的小时数,例如下午2点?

C# C日期时间格式:如何仅显示完整的小时数,例如下午2点?,c#,datetime,datetime-format,C#,Datetime,Datetime Format,可能重复: 我在格式化DateTime对象时遇到一些问题,因此只能显示完整的小时数。例如,如果我有以下日期时间: ? StartTime {7/25/2011 8:00:00 AM} 我想在早上8点打印出来。格式也应该遵循当前区域性的规则,因此在其他国家,上面的示例可以打印为8。下午4点将显示为16点 我还没有找到任何内置的格式化程序来处理这个问题,所以我考虑编写一些静态方法来处理这个问题。我需要获得正确格式的小时数,一个或两个数字以及给定小时的字符串指示符。字符串指示符很容易使用ToStr

可能重复:

我在格式化DateTime对象时遇到一些问题,因此只能显示完整的小时数。例如,如果我有以下日期时间:

? StartTime
{7/25/2011 8:00:00 AM}
我想在早上8点打印出来。格式也应该遵循当前区域性的规则,因此在其他国家,上面的示例可以打印为8。下午4点将显示为16点

我还没有找到任何内置的格式化程序来处理这个问题,所以我考虑编写一些静态方法来处理这个问题。我需要获得正确格式的小时数,一个或两个数字以及给定小时的字符串指示符。字符串指示符很容易使用ToStringtt,如果当前区域性使用24小时格式,则正确返回空。所以我已经走到一半了

但是我被卡住了,因为CultureInfo的DateTimeFormatInfo似乎没有告诉我是否应该用一个或两个数字h和h来显示小时

有什么想法吗?

我想你可以使用hh格式和tt相结合

看看

更新:

我想这会告诉您如何根据CultureInfo显示12小时或24小时的小时数。

我想您可以使用hh格式与tt相结合

看看

更新:


我想这会告诉您如何根据CultureInfo显示12小时或24小时的小时数。

由于我的移动连接无法编辑,请添加另一个答案

好的,如果您已经知道区域性是否使用am/pm指示符,这也会告诉您是否使用h或h-如果没有指示符,您不想使用h,因为这是不明确的8可能意味着上午8点或下午8点


因此,根据确定是否存在am/pm指示符的结果,可以使用htt或%h。

添加另一个答案,因为我的移动连接无法进行编辑

好的,如果您已经知道区域性是否使用am/pm指示符,这也会告诉您是否使用h或h-如果没有指示符,您不想使用h,因为这是不明确的8可能意味着上午8点或下午8点


因此,根据确定是否存在am/pm指示器的结果,可以使用htt或%h。

+1:完美。你只需要在h这里x.ToStringh tt更新它,但我仍然不确定它是否是他想要的。哦!我没有正确地阅读这个问题。我的孩子,这对不同的文化有用吗?当培养基为fr+1:perfect时检查输出。你只需要在h这里x.ToStringh tt更新它,但我仍然不确定它是否是他想要的。哦!我没有正确地阅读这个问题。我的孩子,这对不同的文化有用吗?当培养基为fr时检查输出
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'