C#日期时间分析器错误
本文关键字:错误 分析器 时间 日期 | 更新日期: 2023-09-27 18:24:39
给定:
DateTime parsedDate;
if (DateTime.TryParseExact("0992012", "ddMyyyy", null, DateTimeStyles.NoCurrentDateDefault, out parsedDate))
{
Debug.WriteLine("YES");
}
else
{
Debug.WriteLine("NO");
}
为什么输出为NO?这是个虫子吗?
这是一个糟糕的格式,基本上-我不知道它是否是指定的是否应该被接受,但在其他数字字段旁边包含一个不带任何分隔符的可变宽度数字字段是一个非常糟糕的想法。
我怀疑解析器在"为月份取1或2位数字"中看到09后面跟着92,但没有意识到2应该属于年份部分。这就是Noda Time解析器所要做的,至少。。。
如果你不能改变你的输入格式,你应该在尝试解析数据之前先将数据按摩到位,例如
if (text.Length == 7)
{
text = text.Substring(0, 2) + "0" + text.Substring(2);
}
// Now parse as ddMMyyyy
我怀疑这与M
代码是一个或两位数的月份有关。在没有分隔符的情况下,确定月份结束和年份开始的位置并非易事。