C#:转换为TimeSpan并未保留完整的价值

时间:2017-11-16 10:39:49

标签: c# .net type-conversion

我在将字符串值转换为TimeSpan时遇到此问题。

值如下:" hrs:mm:ss:ms" 例如:" 00:00:10:03"

将此值转换为TimeSpan时,前导部分会被截断。

代码:

TimeSpan span = new TimeSpan();
TimeSpan.TryParse("00:00:10:03" , out span);

输出: ○时10分03秒

如何仅在Timespan中保留整个值

3 个答案:

答案 0 :(得分:0)

TimeSpan.TryParse无法识别您的格式。而是使用

span = TimeSpan.ParseExact("00:00:10:03", @"hh\:mm\:ss\:ff", System.Globalization.CultureInfo.InvariantCulture);

答案 1 :(得分:0)

你应该在输出中使用span.Ticks

答案 2 :(得分:0)

来自MSDN

private static void ParseTimeSpan(string intervalStr)
{
  // Write the first part of the output line.
  Console.Write( "{0,20}   ", intervalStr );

  // Parse the parameter, and then convert it back to a string.
  TimeSpan intervalVal; 
  if (TimeSpan.TryParse(intervalStr, out intervalVal)) 
  {
     string intervalToStr = intervalVal.ToString();

     // Pad the end of the TimeSpan string with spaces if it 
     // does not contain milliseconds.
     int pIndex = intervalToStr.IndexOf(':');
     pIndex = intervalToStr.IndexOf('.', pIndex);
     if (pIndex < 0)
        intervalToStr += "        ";

     Console.WriteLine("{0,21}", intervalToStr);
     // Handle failure of TryParse method.
  }
  else
  {
     Console.WriteLine("Parse operation failed.");
  }
} 

称他们为:

ParseTimeSpan("0");
    ParseTimeSpan("14");
    ParseTimeSpan("1:2:3");
    ParseTimeSpan("0:0:0.250");
    ParseTimeSpan("10.20:30:40.50");
    ParseTimeSpan("99.23:59:59.9999999");
    ParseTimeSpan("0023:0059:0059.0099");
    ParseTimeSpan("23:0:0");
    ParseTimeSpan("24:0:0");
    ParseTimeSpan("0:59:0");
    ParseTimeSpan("0:60:0");
    ParseTimeSpan("0:0:59");
    ParseTimeSpan("0:0:60");
    ParseTimeSpan("10:");
    ParseTimeSpan("10:0");
    ParseTimeSpan(":10");
    ParseTimeSpan("0:10");
    ParseTimeSpan("10:20:");
    ParseTimeSpan("10:20:0");
    ParseTimeSpan(".123");
    ParseTimeSpan("0.12:00");
    ParseTimeSpan("10.");
    ParseTimeSpan("10.12");
    ParseTimeSpan("10.12:00");