最近做的項目中服務器是英文的系統,系統需要通過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);
轉換日期格式,才會正確。