为什么.NET假设从下面开始我们指的是2015年,而不是1915年。
var d = DateTime.ParseExact("20/11/15", "dd/MM/yy", new CultureInfo("en-GB"));
我猜,它会尝试接近,但背后有合理的设计决定吗?
答案 0 :(得分:27)
答案 1 :(得分:13)
它使用Calendar.TwoDigitYearMax
属性。
此属性允许将2位数年份正确转换为4位数年份。例如,如果此属性设置为2029,则100年范围为1930年至2029年。因此,2位数值30表示为1930,而2位数值29表示为2029。 / p>
对于en-GB,此属性的值为2029.可以在“控制面板”中更改:
此属性的初始值源自“控制面板”的区域和语言选项部分中的设置。
来自MSDN:
在解析操作中,使用" yy"解析的两位数年份。自定义格式说明符基于格式提供程序的当前日历的Calendar.TwoDigitYearMax属性进行解释。