Csharp/C#教程:将字符串转换为DateTime,小于7的十进制小数分享


将字符串转换为DateTime,小于7的十进制小数

所以我试图将以下格式的字符串日期转换为DateTime。 我可以使用ParseExact解析它,当使用格式字符串“fffffff”有7个小数秒的小数时,但我得到的字符串可以(并不总是)具有9个小数秒的分数。

我真的不在乎那些最后几位数是什么,因为我最终还是会把它四舍五入。 我正在寻找的是一种方法来解析它们或截断它们之前我从ParseExact方法得到一个错误,因为它与“fffffff”不匹配。 我唯一的想法是根据小数点后的字符数截断字符串。 有更简单的方法吗? 提前致谢!

要解析的示例字符串:“2015-12-10 13:14:15.123456789”

DateTime.ParseExact("2015-12-10 13:14:15.123456789", "yyyy-MM-dd HH:mm:ss.fffffff", System.Globalization.CultureInfo.InvariantCulture); 

抛出FormatException,但以下工作。

 DateTime.ParseExact("2015-12-10 13:14:15.1234567", "yyyy-MM-dd HH:mm:ss.fffffff", System.Globalization.CultureInfo.InvariantCulture); 

我不相信你可以用正常的解析代码和现有的文本来做到这一点。 DateTime的精度仅下降到刻度,其中刻度为100纳秒。 我认为最简单的事情是截断字符串本身:

 string pattern = "yyyy-MM-dd HH:mm:ss.fffffff"; if (text.Length > pattern.Length) { text = text.Substring(0, pattern.Length); } DateTime value = DateTime.ParseExact(text, pattern, CultureInfo.InvariantCulture); 

强制插件:在Noda Time 2.0中你不需要这样做,因为它支持纳秒的精度:)

为了补充Jon的答案, 7是解析的限制并代表秒分数的有效数字。

来自"fffffff"自定义格式说明符

虽然可以显示时间值的第二个组成部分的百万分之一,但该值可能没有意义 。 日期和时间值的精度取决于系统时钟的分辨率。 在Windows NT 3.5(及更高版本)和Windows Vista操作系统上,时钟的分辨率大约为10-15毫秒。

上述就是C#学习教程:将字符串转换为DateTime,小于7的十进制小数分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/cdevelopment/1016288.html

(0)
生活系游戏生活系游戏
上一篇 2021年12月31日
下一篇 2021年12月31日

精彩推荐