看来您最多只能有 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。
要获得额外的精度,您可能需要查看不同的库。也许 Jon Skeet 的Noda Time可能也无济于事。
但是,我猜您实际上并不想要亚秒级精度到小数点后 9 位(特别是因为除非尾随零是一个很大的巧合,否则原始数据中不太可能有这种精度)。
因此,如果您愿意牺牲这种多余的精度,您可以使用 Regex 或类似的方法来解析毫秒并将它们减少到 7 位数。
因此,如果您愿意牺牲多余的精度,MarcinJuraszek 的评论使用一种格式,包括0
听起来是最好的方法:
DateTime.TryParseExact(certDate, "dd-MMM-yy hh.mm.ss.fffffff00 tt",
CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None,
out certifiedDateTime);