Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 时间跨度格式不正确_C#_.net_Parsing_Timespan - Fatal编程技术网

C# 时间跨度格式不正确

C# 时间跨度格式不正确,c#,.net,parsing,timespan,C#,.net,Parsing,Timespan,我目前正在尝试转换一个给定的时间(通过文本框输入),输入的时间看起来有点像01 52 22分秒米秒 然而,Timespan.parse(tbName.text)给了我一个不正确的格式错误 如果我在文本框中输入46之类的内容,我就可以让它工作,但它会将天设置为46,而不是秒 你知道如何从上面提到的文本输入中设置分秒和毫秒吗 我很确定timespan是一个不错的选择,但我读过的许多帖子都使用dateTime,并且通过格式化MDSN上的精彩文档,只使用变量的时间部分,你有没有先去看看 要分析的字符串的

我目前正在尝试转换一个给定的时间(通过文本框输入),输入的时间看起来有点像01 52 22分秒米秒

然而,Timespan.parse(tbName.text)给了我一个不正确的格式错误

如果我在文本框中输入46之类的内容,我就可以让它工作,但它会将天设置为46,而不是秒

你知道如何从上面提到的文本输入中设置分秒和毫秒吗


我很确定timespan是一个不错的选择,但我读过的许多帖子都使用dateTime,并且通过格式化MDSN上的精彩文档,只使用变量的时间部分,你有没有先去看看


要分析的字符串的规范为

[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
其中,
ws
是空白,
d
是从0到10675199的天数,其余的含义很明显(如果您不知道如何阅读此类规范,方括号中的项目是可选的,必须从大括号内的项目中选择一个项目1)。因此,如果您想将
“01 52 22”
解析为
时间跨度
,其中
时间跨度.Minutes==1
时间跨度.Seconds==52
时间跨度.millises==22
,则您需要将输入重新格式化为
“00:01:52.22”
,然后进行解析

字符串s=“00:01:52.22”; TimeSpan t=TimeSpan.Parse(s)

或者像这样自己解析字符串

string s = "01 52 22";
string[] fields = s.Split(' ');
int minutes = Int32.Parse(fields[0]);
int seconds = Int32.Parse(fields[1]);
int milliseconds = Int32.Parse(fields[2]);
TimeSpan t = new TimeSpan(0, 0, minutes, seconds, millseconds);
如果我在文本框中输入46之类的内容,我就可以让它工作,但它会将天设置为46,而不是秒

因此,参考上面的规范,
“46”
解析为
TimeSpan
TimeSpan.Days==46
的原因是再次查看规范

[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
没有空格,没有
-
,没有尾随空格,我们只看

d

“46”
显然符合前面的规范,因此正如您所看到的那样进行解析

1:帮自己一个忙,学习正则表达式;虽然以上不是正则表达式,但理解它们将有助于阅读上述规范。我推荐。理解正式语法也有帮助

[d.]hh:mm[:ss[.ff]]