我以这种方式创建了一个 TimeSpan

TimeSpan ts = new Timespan();

// Do some addition and subtraction on it

然后我使用这个将它保存到一个文件中
string.Format("{0}:{1}:{2}:{3}", ts.Hours, ts.Minutes, ts.Seconds, ts.MilliSeconds);

从它返回的各种值是这样的
0:0:4:410
0:0:1:425
0:0:1:802
0:0:1:509
0:0:1:674
0:0:1:628
0:0:2:76

如何将其转换回 TimeSpan。

我在用
TimeSpan.ParseExact("0:0:4:410", "h:m:s:fff", null);

但它给了我错误 Input String is not in correct format.
我哪里错了?

最佳答案

我相信你需要解析冒号,基本上。我还建议使用不变文化而不是当前的线程文化:

var ts = TimeSpan.ParseExact("0:0:4:410", @"h\:m\:s\:fff",
                             CultureInfo.InvariantCulture);

来自 the documentation :



我还建议使用 h:mm:ss.fff 格式 - 我相信这比您当前的格式更清晰。请注意,您可以直接使用格式而不是当前的格式化方法:
const string TimeSpanFormat = @"h\:mm\:ss\.fff";

string text = ts.ToString(TimeSpanFormat, CultureInfo.InvariantCulture);
...
TimeSpan parsed = TimeSpan.ParseExact(text, TimeSpanFormat,
                                      CultureInfo.InvariantCulture);

关于c# - TimeSpan.ParseExact 给出错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12036972/

10-13 05:04