我正在导入Excel行,其中一列是“日期”字段。我收到日期的情况有两种。
第一是我正确地以Double形式收到日期。对于这种情况,可以使用简单的DateTime.FromOADate(parsedDouble)
。
第二个场景是出于某种原因,客户端没有正确格式化单元格格式,或者虽然是有效日期,但单元格中的值仍未被正确识别。例如,日期将为1/12/2016
,英国格式的日期为1st December 2016
。 Excel还传递单元格的格式信息,因此在这种情况下,它通过单元格格式“ dd/mm/yyyy
”传递。这是excel中正确的日/月/年格式,但是我需要能够在c#中解析它,但由于小写的mm
是分钟而不是个月。
因此以下操作无效。
var x = DateTime.ParseExact("12/12/2016", "dd/mm/yyyy", System.Globalization.CultureInfo.InvariantCulture);
它将输出 12/01/2016 00:12:00
我环顾四周,似乎找不到其他遇到相同问题的人,而且我不确定如何处理此问题。
一个显而易见的(不受欢迎的)解决方案是对其进行破解,并将 dd/mm/yyyy
的excel格式映射到 dd/MM/yyyy
。