1、问题由来
在做一个导入的需求时,测试导入模板,无论导入模板里的日期设置成何种日期格式到代码中都会提示有不正确的格式化数据,加断点调试发现,导入的日期如:Excel表格中是2022/5/26,断点看到的却是26-5月-2022。
2、解决方案
网上查询了几种解决方案,有导入的数据列格式判断转换,日期格式强转等等,都没什么效果,最后解决的方法如下:
// NPOI导入日期格式处理
string mytime = dateStr.Trim(); // dateStr为Excel导入的日期值
IFormatProvider culture = new CultureInfo("zh-CN", true);
string[] expectedFormats = { "dd-M月-yyyy" };
DateTime dateTime;
if(DateTime.TryParseExact(mytime, expectedFormats, culture, DateTimeStyles.AllowInnerWhite, out dateTime))
{
mytime = dateTime.ToString("yyyy-MM-dd");
}
else
{
mytime = dateStr.Trim();
}
// 新的 mytime 即为处理后的导入日期格式化后的字符串值
3、参考文档
1)C# NPOI 读取日期格式数据不准确问题