C#DateTime Parser Bug?

use*_*064 1 c# datetime parsing

给定:

        DateTime parsedDate;

        if (DateTime.TryParseExact("0992012", "ddMyyyy", null, DateTimeStyles.NoCurrentDateDefault, out parsedDate))
        {
            Debug.WriteLine("YES");
        }
        else
        {
            Debug.WriteLine("NO");
        }
Run Code Online (Sandbox Code Playgroud)

为什么输出没有?这是一个错误吗?

Jon*_*eet 6

这是一个糟糕的格式,基本上 - 我不知道它是否被指定是否应该被接受,但在其他数字字段旁边包括一个可变宽度数字字段而没有任何分隔符是一个非常糟糕的主意.

怀疑解析器将此视为09,然后是"在本月取1或2位数字"中的92,并且没有意识到2意味着属于年份部分.那就是Noda Time解析器会做的,至少......

如果您无法更改输入格式,则应在尝试解析之前就地按摩数据 - 例如

if (text.Length == 7)
{
    text = text.Substring(0, 2) + "0" + text.Substring(2);
}
// Now parse as ddMMyyyy
Run Code Online (Sandbox Code Playgroud)