【发布时间】:2009-07-15 03:34:23
【问题描述】:
默认情况下,日期时间格式字符串中的小时将 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”?
【问题讨论】:
标签: c# .net datetime formatting
默认情况下,日期时间格式字符串中的小时将 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”?
【问题讨论】:
标签: c# .net datetime formatting
【讨论】:
你很接近,尝试使用这个代替:
string s = dt.ToString("H:mm:ss");
【讨论】:
string s = (dt.Hour >= 12 ? dt.Hour - 12 : dt.Hour).ToString() +
dt.ToString(":mm:ss");
显然这不是您想要的。按照我阅读您帖子的方式,您想要一个 12 小时制 将“12:00”重新映射到“0:00”(一些国际时钟会这样做),这会产生。此行为没有格式字符串,因此您必须自己创建字符串。
您还可以阅读有关DateTime 格式字符串here 的更多信息。
【讨论】:
用“H:mm:ss”代替“h:mm:ss”
【讨论】:
您需要在 ToString 方法中使用大写的 H 而不是小写的 h。
即
DateTime dt = new DateTime(1999, 1, 1, 0, 0, 0); 字符串 s = dt.ToString("H:mm:ss");
【讨论】: