我必须解析以小时,分钟,秒和几分之一秒为单位的时间。如
"15:42:58.1"
"15:42:58.21"
"15:42:58.417"
使用以下代码:
DateTime.ParseExact("15:42:58.1", "HH:mm:ss.0.f", CultureInfo.InvariantCulture);
这只能精确到小数点后一位。其他十进制的十进制会导致异常。
问题:
答案 0 :(得分:2)
您可以使用DateTimeFormat数组。 喜欢
string[] validFormats = { "HH:mm:ss.f", "HH:mm:ss.ff", "HH:mm:ss.fff" };
DateTime.ParseExact("15:42:58.1", validFormats, CultureInfo.InvariantCulture, DateTimeStyles.None);
现在,即使您输入的是3位数字,这也会解析您的DateTime
答案 1 :(得分:1)
如果这是一天中的某个时间或类似时间,则可以使用TimeSpan
。参见Custom TimeSpan format strings。杰罗恩·莫斯特(Jeroen Mostert)评论您的问题的技巧仍然适用:使用大写字母F
。
必须使用TimeSpan
格式字符串对定界符进行转义。因此,请使用以下其中一项:
var ts1 = TimeSpan.ParseExact("15:42:58.1", @"hh\:mm\:ss\.FFFFFFF", CultureInfo.InvariantCulture);
var ts2 = TimeSpan.ParseExact("15:42:58.1", "hh':'mm':'ss'.'FFFFFFF", CultureInfo.InvariantCulture);
即使尾随零也可以使用,例如"15:42:58.10"
解析确定。