将字符串转换为TimeSpan';行不通

将字符串转换为TimeSpan';行不通,timespan,managed-c++,Timespan,Managed C++,我正在尝试将字符串转换为timeSpan,但似乎做不到 我使用C++托管代码: TimeSpan timeSpan; if (TimeSpan::TryParse("01.55", timeSpan)) { int minute = timeSpan.Minutes; int hours= timeSpan.Hours; //do some work here } 锥虫又在飞了。 我做错了什么 谢谢,时间格式错误,请参阅 格式应为:[ws][-]{d|d.hh:mm[:ss[.

我正在尝试将字符串转换为timeSpan,但似乎做不到

我使用C++托管代码:

TimeSpan timeSpan;
if (TimeSpan::TryParse("01.55", timeSpan))
{  
  int minute = timeSpan.Minutes;
  int hours= timeSpan.Hours;
  //do some work here
}
锥虫又在飞了。 我做错了什么


谢谢,

时间格式错误,请参阅

格式应为:
[ws][-]{d|d.hh:mm[:ss[.ff]].\hh:mm[:ss[.ff]]}[ws]


或者缩写为您的示例
1:55
,而不是
1.55
。这是1小时和55分钟的格式。您的符号表示的是
days.hours
,这也是错误的,因为day只有24小时,所以TimeSpan允许最大值为23。您的字符串仍然需要
:0:0
,因此它形成
dd.hh:mm:ss
才能成功解析。

由于解析器不容易出现
d(./:)hh
处的错误,您可以将
全部解析为
,然后解析它。我认为语法足够简单,所以这里不作解释。如果没有,则在link上有一个简单的示例,它显示了您需要知道的所有内容。因此,我需要重新格式化字符串并将其转换为“:0:0”,这样就可以了?只需使用
yourXMLString=yourXMLString->Replace(',':”)
然后使用
TimeSpan::TryParse(您的xmlstring,TimeSpan)
。确保不要在整个xml文件中替换,因为您可以替换任何不希望修改的内容。thx,替换它是有效的。只是想不出一件事。当我使用“02:55”时,TimeSpan::TryParse如何不“认为”02是天数?因为那些编程足够聪明的人以前就想到了这一点,并编程使其默认为
hh:mm
(如果您提供两个数字,用
分隔)。天的默认格式是
d.hh:mm
,但是如果您提供4个数字,都用
分隔:
,它知道这些是
dd:hh:mm:ss
。尽管在提供ms时,您必须用
分隔天,用ms也一样,就像这样
dd.hh:mm:ss.ms
,否则它将不起作用。如果这对您有帮助,我会通知您回答一个公认的问题:)