无法从格式的excel文件parsingasp.net中的DateTime – 25-OCT-13 01.08.24.732000000 PM

我正在阅读的Excel文件的date时间列值为"25-OCT-13 01.08.24.732000000 PM"并将其读入.Net的date时间格式

 DateTime.TryParseExact(certDate, "dd-MMM-yy hh.mm.ss.fffffffff tt", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out certifiedDateTime) 

但总是假的。 我错过了什么。

我在Visual Studio 2013,.Net 4.5中使用C#

看来你最多只能有7个f元素。

这工作:

 string certDate = "25-Oct-13 01.08.24.7320000 PM"; DateTime certifiedDateTime; DateTime.TryParseExact(certDate, "dd-MMM-yy hh.mm.ss.fffffff tt", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out certifiedDateTime); certifiedDateTime.Dump(); 

看起来这是因为DateTime存储为代表刻度的64位数字。 Eric Lippert有一篇很好的相关文章,叫做DateTime的精确性和准确性 。

为了获得更高的精度,您可能需要查看不同的库。 也许Jon Skeet的野田时代 ,虽然这可能也没有帮助。

不过,我猜测你实际上并不需要亚秒精度到9个小数位(特别是因为在原始数据中不太可能有这种情况,除非尾随的零是很大的巧合)。

因此,如果你很高兴牺牲这个多余的精度,你可以使用正则expression式或类似的parsing毫秒,并减less到7位数。

因此,如果您高兴地牺牲了过度的精确度, MarcinJuraszek的评论使用包括0的格式听起来像是最好的方法:

 DateTime.TryParseExact(certDate, "dd-MMM-yy hh.mm.ss.fffffff00 tt", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out certifiedDateTime);