最近做的项目中服务器是英文的系统,系统需要通过excel的单元格导入日期,excel中的日期格式是系统默认的日期格式,如下图所示
以上日期格式,会跟着操作系统设置的日期格式相同例如我的中文系统的日期格式是如下样式的
英文系统的日期格式如下图所示
因此,在使用DateTime的ParseExact方法解析日期时间的时候要将这两种日期格式都写入
string[] dateFormates = { "yyyy-MM-dd", "MM/yyyy/dd", "yyyyMMdd", "yyyy/MM/dd", "yyyy/M/dd", "yyyy/M/d", "M/d/yyyy h/mm/ss", "M/d/yyyy h:mm:ss tt", "M/d/yyyy" };
"yyyy/M/d":是中文版操作系统的默认格式
"M/d/yyyy":是上图的英文操作系统的默认格式
然后使用
var date = DateTime.ParseExact(cell.Text.ToString().Trim(), dateFormates, CultureInfo.InvariantCulture, DateTimeStyles.None);
转换日期格式,才会正确。