DateTime.ToString 格式

DateTime.ToString formats

我遇到单行代码问题;(

TBCurrent.Text = DateTime.Now.Subtract(Current).ToString("HH:mm:ss");

这会在计时器滴答时触发。我已经尝试过以下格式:

"HH\:mm\:ss"
"HH':'mm':'ss"
"HH\":\"mm\":\"ss"

如果我只输入 "mm" 或 "ss" 就可以工作,但甚至 "HH mm ss".

您以前遇到过这样的错误吗?或者这是 .NET 版本 (4.0) 相关的?

谢谢, 迈克尔

也就是TimeSpan formatting (see link),不是DateTime。试试 "hh':'mm':'ss".

认为 TimeSpan 格式与 DateTime 格式相同是一个常见的错误。在 .NET 4.0 之前,您无法格式化 TimeSpan.

对于DateTime,有两种写时间的方法,20:508:50 PM"H" 给出 20"h" 给出 8。对于 TimeSpan,没有这种区别,您必须始终使用小写字母 h

这种格式似乎能得到你想要的输出

TBCurrent.Text = DateTime.Now.Subtract(Current).ToString(@"hh\:mm\:ss");

您需要将反斜杠放在冒号之前,因为 Subtract 方法 returns TimeSpan 而不是 DateTime 和 TimeSpan 对于 Custom Format String 有不同的规则。并且不要忘记 @ 逐字转义反斜杠