1

根据 MSDNd格式说明符输出 TimeSpan.Days 属性。在该.ToString()方法中使用时,这似乎是正确的:

TimeSpan.FromDays(1).ToString("%d")

但是,当在 a 中使用时String.Format,说明符会引发异常:

String.Format("{0:d}", TimeSpan.FromDays(1))

'String.Format("{0:d}", TimeSpan.FromDays(1))' threw an exception of type 'System.FormatException'
    base {System.SystemException}: {"Input string was not in a correct format."}

说明dd符工作得很好,但给出了一个前导零(如预期的那样)。

为什么说明d符会抛出异常?

4

3 回答 3

3

你错过了%

string.Format("{0:%d}", TimeSpan.FromDays(1))

根据您链接的文章(以及您复制的示例):

如果单独使用“d”自定义格式说明符,请指定“%d”,以免将其误解为标准格式字符串。

于 2013-08-15T16:36:25.947 回答
1

典型的,我刚问完这个问题,我就在这里找到答案——显然这适用于 DateTime 和 TimeSpan (可能还有其他所有格式)

于 2013-08-15T16:36:27.983 回答
0

我最喜欢的 String.Format 网站是Stevex

您应该注意的行在 Numbers 下

说明符 | 类型 | 格式 | 输出(通过双 1.42) |
输出(通过Int -12400)小数(整数) | {0:d} | System.FormatException | -12400

TimeSpan.FromDays(1)返回一个双精度值。d 格式化程序需要一个整数,并且因为它接收一个双精度数,所以会抛出一个格式异常。

于 2013-08-15T16:40:58.927 回答