TimeSpan.Parse("23:00:00") 返回 23 小时。
TimeSpan.Parse("24:00:00") 返回 24 天!
我意识到我犯了一个错误,允许的时间范围是 0-23。但是,如果您尝试解析超出范围的值,则会在几分钟和几秒钟内出现异常。在小时值超出范围的情况下,解析器错误地假定您的意思是天而不是小时。
有人可以解释一下吗?
这个例子在这里涵盖了这个主题,并表明 http://msdn.microsoft.com/en-us/magazine/ee309881.aspx
TryParse 似乎也是如此。尽管文档说明解析应该失败,但我得到了 24 天。
http://msdn.microsoft.com/en-us/library/3z48198e
// String to Parse TimeSpan
// --------------- ---------------------
// 0 00:00:00
// 14 14.00:00:00
// 1:2:3 01:02:03
// 0:0:0.250 00:00:00.2500000
// 10.20:30:40.50 10.20:30:40.5000000
// 99.23:59:59.9999999 99.23:59:59.9999999
// 0023:0059:0059.0099 23:59:59.0099000
// 23:0:0 23:00:00
// 24:0:0 Parse operation failed.
// 0:59:0 00:59:00
// 0:60:0 Parse operation failed.
// 0:0:59 00:00:59
// 0:0:60 Parse operation failed.
// 10: Parse operation failed.
// 10:0 10:00:00
// :10 Parse operation failed.
// 0:10 00:10:00
// 10:20: Parse operation failed.
// 10:20:0 10:20:00
// .123 Parse operation failed.
// 0.12:00 12:00:00
// 10. Parse operation failed.
// 10.12 Parse operation failed.
// 10.12:00 10.12:00:00
我发现了一个错误还是我做错了什么?
编辑:我已经在 LinqPad 中对此进行了测试,并在 Windows 7 64 位的 .NET4 中使用了控制台应用程序。
var result = TimeSpan.Parse("24:00:00");
Console.WriteLine(result);
result = TimeSpan.Parse("24:00:00", CultureInfo.InvariantCulture);
Console.WriteLine(result);
这导致:
24.00:00:00
24.00:00:00