DateTime TryParse-映射';99';到2099年,而不是1999年

本文关键字:1999年 TryParse- 映射 DateTime 2099年 | 更新日期: 2023-09-27 18:06:50

可能重复:
日期时间。TryParse世纪控制C#

我需要尝试将以下字符串解析为DateTime对象:"01/01/99",我使用的是这样的东西:

DateTime outDate;
if (DateTime.TryParseExact("01/01/99", "dd/MM/yy", null, System.Globalization.DateTimeStyles.None, out outDate))
{
     //Do stuff here
}

当然,这个日期被解析为01/01/1999,这不是我想要的——我希望它被解析为2099。有简单的方法吗?遗憾的是,修改我正在分析的数据以包括全年数据并不是一种选择。

DateTime TryParse-映射';99';到2099年,而不是1999年

根据这个答案,您可以为ParseExact()提供一个区域性对象。可疑TryParseExact()与相同

CultureInfo ci = new CultureInfo(CultureInfo.CurrentCulture.LCID);
ci.Calendar.TwoDigitYearMax = 2099;
//Parse the date using our custom culture.
DateTime dt = DateTime.ParseExact(input, "MMM-yy", ci);

这是一个区域设置。在Windows 7中,您可以在"控制面板">"时钟"、"语言和地区">"地区和语言"中进行编辑。在格式选项卡上,点击高级按钮并查看日期。

我不知道有什么方法可以务实地改变这一点,但如果你在控制面板中设置它,那么只要你不改变文化,你的应用程序就会使用它。

也就是说,你真的需要用重物打败向你提供这些数据的人。我们早在12年前就应该消除这种关于Y2K的无稽之谈。

edit-dan04的评论链接也有一些选项。