能否有人解释一下下面的代码段为什么返回true?
根据“d”自定义格式说明符的文档,“一个单独的数字日期不带前导零进行格式化”。那么,当我给TryParseExact一个带有前导零的单个数字日期时,为什么它不会失败呢?
DateTime x;
return DateTime.TryParseExact
(
"01/01/2001",
@"d\/MM\/yyyy",
null,
System.Globalization.DateTimeStyles.None,
out x
);
更新
我觉得可能我最开始的表述不太清晰。实际上,我的问题是:为什么TryParseExact接受一些不完全匹配的值? 根据我看到的所有文档,“d”匹配“01”和“1”就像“MM”匹配“03”以及“March”一样都是错误的。 这里的问题不是这些值是等价的,而是它们与格式不匹配。
相关文档片段如下:
来自TryParseExact:字符串表示的格式必须完全匹配指定的格式。
来自“d”说明符:单个数字的日期会被格式化为没有前导零。
对我来说,似乎非常明显,“01”有一个前导0,因此与“d”不完全匹配。
DateTime.TryParseExact("1/01/2001", @"dd\/MM\/yyyy", null, System.Globalization.DateTimeStyles.None, out x);
- BFreeDateTime.TryParseExact("1/01/2001", @"dd\/MM\/yyyy", null, System.Globalization.DateTimeStyles.None, out x);
返回false
和DateTime.ParseExact("1/01/2001", @"dd\/MM\/yyyy", null, System.Globalization.DateTimeStyles.None);
抛出FormatException
... - verdesmarald