C#CSV解析-如何从字符串(日期)表示中获得正确的格式



我正在分析一个CSV文件。其中一列表示日期。问题是日期可以是dd/MM/yyyy和MM/dd/yyyy。

我无法确定哪种格式是正确的,例如日期是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);
        }
    }

这不是一个答案,但它需要太多的格式化才能作为注释。此代码是多余的:

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格式说明符的版本也是如此。

最新更新