打开观察窗口
new DateTime(2010,01,01).ToString("h")
给予:
类型的异常
new DateTime(2010,01,01).ToString("h")
抛出了System.FormatException
...然而
new DateTime(2010,01,01).ToString("h ")
给出:“12”
那为什么额外的空间会阻止这种格式异常的发生呢? 这是一个错误吗?
答案 0 :(得分:43)
这是因为它认为它是standard format string而不是custom one,因为它是一个字符。
更好的解决方法是使用%
:
string text = DateTime.Now.ToString("%h");
来自自定义格式字符串的文档:
自定义日期和时间格式字符串 由两个或多个字符组成。 日期和时间格式化方法 解释任何单字符字符串 作为标准的日期和时间格式 串。如果他们不承认 字符作为有效的格式说明符, 他们抛出FormatException。对于 例如,包含的格式字符串 只有说明符“h”才是 被解释为标准日期和 时间格式字符串。但是,在这 特殊情况,例外是 抛出因为没有“h” 标准日期和时间格式 说明符。
使用任何自定义日期和时间 格式说明符是唯一的 格式字符串中的说明符(即, 使用“d”,“f”,“F”,“g”,“h”, “H”,“K”,“m”,“M”,“s”,“t”,“y”, “z”,“:”或“/”自定义格式 说明符本身),包括一个空格 在说明符之前或之后,或 包括百分比(“%”)格式 单个自定义之前的说明符 日期和时间说明符。
例如,“%h”被解释为a 自定义日期和时间格式字符串 显示由...表示的小时 当前的日期和时间值。您 也可以使用“h”或“h”格式 字符串,虽然这包括一个空格 在结果字符串中 小时。以下示例 说明了这三种格式 字符串。