我正在研究一个C#-WPF解析器,它从文档中读取行并创建包含多个字段的对象,包括“添加日期”字段。问题:日期是非标准的西班牙语格式,我无法使DateTime.ParseExact工作,正如我的研究建议的那样。这是代码:
string input = dateAddedStringSPA; //domingo 2 septiembre 2012, 23:54:20
string format = "dddd dd MMMM yyy, HH:mm:ss";
CultureInfo cultureInfo = new CultureInfo("es-ES");
DateTime dateAddedSPA;
try
{
dateAddedSPA = DateTime.ParseExact(input, format, cultureInfo);
if (dateAddedSPA == DateTime.MinValue)
{
clipping.DateAdded = DateTime.Now; /*Added this conditional workaround to avoid an exception if parsing fails (and always fails). While this doesn't work every object will have the same date: current. */
}
else
{
clipping.DateAdded = dateAddedSPA;
}
}
catch (Exception)
{
throw new Exception("Error encountered while adding date.");
}
您可以在输入端看到的注释是实际的字符串格式,看起来就是这样。 “格式”是我试图让DateTime理解它,我也尝试删除年后的逗号,仍然没有工作。我不确定这种文化是否会引发问题,但我担心我的专业知识还不够。事实是,解析失败,我将日期设置为1/1/0001 12:00:00 AM。有什么迹象表明这里会发生什么?
提前致谢。
答案 0 :(得分:2)
使解决方案更加“普及”#34;您可以指定多种格式并使用TryParseExact()
.NET / C#方法,如以下演示示例代码段所示:
CultureInfo cultureInfo = new CultureInfo("es-ES");
string[] formats ={"dddd d MMMM yyy, HH:mm:ss", "dddd d MMMM yyy, HH:mm:ss"};
string input = "domingo 2 septiembre 2012, 23:54:20";
DateTime dt;
if (DateTime.TryParseExact(input, formats, cultureInfo, DateTimeStyles.None, out dt));
{
if (dt<DateTime.Now)
Console.WriteLine("OK");
Console.ReadKey();
}
希望这可能会有所帮助。