【发布时间】:2014-01-22 08:10:26
【问题描述】:
您可以像这样为DateTime 对象指定自定义格式:
DateTime.Now.ToString("HH:mm:ss"); // 19:55:23
但是当我尝试对TimeSpan 对象使用相同的格式时:
DateTime.Now.TimeOfDay.ToString("HH:mm:ss");
我得到了"Input string was not in a correct format." 异常。
事实证明,解决方案是您需要像 "HH\\:mm\\:ss" 中那样转义 ':' 字符。请注意,有一个双反斜杠,因为如果您只指定一个,它会破坏字符串,所以您也需要转义那个。
问题是,为什么 .NET Framework 开发人员会这样做?肯定是有原因的。为什么我们不能像使用DateTime 对象那样在不转义它们的情况下使用自定义格式说明符?
寻找 .NET 专家来阐明这个主题。
【问题讨论】:
-
这个 MSDN 链接:msdn.microsoft.com/en-us/library/ee372287%28v=vs.110%29.aspx 声明
The .NET Framework does not define a grammar for separators in time intervals.,但我不完全确定原因是什么(无论如何值得一读)。