次のスニペットが true を返す理由を説明できる人はいますか?
The "d" custom format specifierのドキュメントによると、「1 桁の日は先行ゼロなしでフォーマットされます。」では、先頭に 0 を付けて 1 桁の日付を指定しても、TryParseExact が失敗しないのはなぜでしょうか?
DateTime x;
return DateTime.TryParseExact
(
"01/01/2001",
@"d\/MM\/yyyy",
null,
System.Globalization.DateTimeStyles.None,
out x
);
アップデート
たぶん最初はわかりにくかったと思います。私が実際に取得しようとしているのは、TryParseExact が正確に一致しない値を受け入れるのはなぜですか? 私が見たすべてのドキュメントから、「d」が「01」と「1」に一致することは、「MM」が「3 月」と「03」に一致するのと同じくらいバグです。ここでの問題は、値が等しいということではなく、形式が一致しないということです。
関連するドキュメントのスニペットは次のとおりです。
TryParseExactから:文字列表現の形式は、指定された形式と正確に一致する必要があります。
「d」指定子から: 1 桁の日は、先行ゼロなしでフォーマットされます。
「01」の先頭に 0 があるため、「d」と完全に一致しないことは明らかです。