我目前正在尝试转换给定时间(通过文本框输入),输入的时间看起来有点像01 52 22分钟秒的mili secs。
然而,Timespan.parse(tbName.text)给出了错误的格式错误。
如果我在文本框中输入类似46的内容,我就可以使用它,但是它将日期设置为46而不是秒。
如何获取它只是为了设置上述文本输入的分钟秒和毫秒数?
我很确定timepan是要走的路,但我读过的很多帖子都使用了dateTime,并且只通过格式化使用变量的时间部分
答案 0 :(得分:1)
关于MDSN的精彩文档,您是否先在那里寻找?
答案 1 :(得分:1)
要解析的字符串的规范是
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
其中ws
是空格,d
是从0到10675199的天数,其余的含义是显而易见的(如果你不知道如何阅读这样的规范,方括号中的项目是可选,并且必须从花括号 1 内的项目中选择一个项目。因此,如果您要将"01 52 22"
解析为TimeSpan
TimeSpan.Minutes == 1
,TimeSpan.Seconds == 52
和TimeSpan.Milliseconds == 22
,那么您需要将输入重新格式化为"00:01:52.22"
并解析
string s =“00:01:52.22”; TimeSpan t = TimeSpan.Parse;;
或者自己解析字符串
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
或
[d.]hh:mm[:ss[.ff]]
和"46"
显然符合以前的规范,因此就像你所见的一样解析。
1 :帮自己一个忙,学习正则表达式;虽然上述内容不是正则表达式,但了解它们将有助于您阅读上述规范。我推荐Mastering Regular Expressions。理解正式语法也有帮助。