我在单行代码上遇到问题;(
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)相关吗?
谢谢你, 迈克尔
答案 0 :(得分:3)
那是TimeSpan
formatting (see link),而不是DateTime
。试试"hh':'mm':'ss"
。
通常认为TimeSpan
格式与DateTime
格式相同是错误的。在.NET 4.0之前,您无法格式化TimeSpan
。
对于DateTime
,有两种方法可以写出时间20:50
或8:50 PM
。 "H"
提供20
,"h"
提供8
。使用TimeSpan
时,不存在这种差异,您必须始终使用小写h
。
答案 1 :(得分:1)
此格式似乎可以获得您想要的输出
TBCurrent.Text = DateTime.Now.Subtract(Current).ToString(@"hh\:mm\:ss");
您需要将反斜杠放在冒号之前,因为Subtract方法返回TimeSpan而不是DateTime,而TimeSpan具有Custom Format String的不同规则。并且不要忘记@ verbatim来逃避反斜杠