我正在解析CSV文件。其中一列代表一个日期。问题是日期可以是dd / MM / yyyy和MM / dd / yyyy。
我无法确定哪个格式是正确的,例如日期为06/04/2015(4月或6月?)
当我能分辨出来时,我的代码正在这样做以格式化输出(标准化的csv)。你知道是否有更好的方法,以及如何识别正确的格式?
public static DateTime? ToValidDateTime(this string date)
{
if (string.IsNullOrEmpty(date))
return null;
try
{
var r = DateTime.Parse(date, CultureInfo.InvariantCulture);
return new DateTime(r.Year, r.Month, r.Day, r.Hour, r.Minute, r.Second);
}
catch (Exception exception)
{
var r = DateTime.Parse(date);
return new DateTime(r.Year, r.Month, r.Day, r.Hour, r.Minute, r.Second);
}
}
答案 0 :(得分:1)
这不是一个答案,但它需要太多的格式才能适合作为评论。这段代码是多余的:
var r = DateTime.Parse(date);
return new DateTime(r.Year, r.Month, r.Day, r.Hour, r.Minute, r.Second);
你没有充分的理由创建两个日期时间实例。只是第一个就够好了。你可以这样做:
return DateTime.Parse(date);
对于具有InvariantCulture
格式说明符的版本也是如此。