如何在DateTime中格式化小时以返回0而不是12?

时间:2009-07-15 03:34:23

标签: c# .net datetime formatting

默认情况下,DateTime的格式字符串中的小时将0转换为12。 例如,如果你有

DateTime dt = new DateTime(1999, 1, 1, 0, 0, 0);
string s = dt.ToString("h:mm:ss");

s的值为“12:0:0”,而不是“0:0:0”。有没有办法获得“0:00:00”呢?

5 个答案:

答案 0 :(得分:7)

尝试

string s = dt.ToString("H:mm:ss");

这是reference page.

答案 1 :(得分:6)

你很接近,试着改用:

string s = dt.ToString("H:mm:ss");

答案 2 :(得分:3)

string s = (dt.Hour >= 12 ? dt.Hour - 12 : dt.Hour).ToString() +
    dt.ToString(":mm:ss");

显然这不是你想要的。我阅读你的帖子的方式,你想要一个 12小时时钟重新映射“12:00”到“0:00”(一些国际时钟这样做),这就产生了。此行为没有格式字符串,因此您必须自己创建字符串。

您还可以阅读有关DateTime格式字符串here的更多信息。

答案 3 :(得分:0)

而不是“h:mm:ss”,请使用“H:mm:ss”

答案 4 :(得分:0)

你需要在ToString方法中使用大写字母H而不是小写字母。

DateTime dt = new DateTime(1999,1,1,0,0,0); string s = dt.ToString(“H:mm:ss”);