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