我正在读取的 Excel 文件的日期时间列值为 “25-OCT-13 01.08.24.732000000 PM”
并将其读入我尝试过的 .Net 日期时间格式
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 有一篇很好的相关文章,名为 Precision and accuracy of DateTime .
为了获得额外的精度,您可能需要查看不同的库。也许是乔恩·斯基特的Noda Time ,尽管这可能也没有帮助。
但是,我猜您实际上并不希望亚秒精度达到小数点后 9 位(特别是因为原始数据中不太可能有这种精度,除非尾随零是一个很大的巧合)。
因此,如果您愿意牺牲这种多余的精度,您可以使用 Regex 或类似的方法来解析毫秒并将其减少到 7 位数字。
因此,如果您愿意牺牲多余的精度,MarcinJuraszek's注释使用包含 0
的格式听起来是最好的方法:
DateTime.TryParseExact(certDate, "dd-MMM-yy hh.mm.ss.fffffff00 tt",
CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None,
out certifiedDateTime);
关于c# - 无法从格式为 25-OCT-13 01.08.24.732000000 PM 的 Excel 文件解析 asp.net 中的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19919297/