这是一段简单的C#代码:
Convert.ToInt32(TimeSpan.FromMinutes(5).TotalMilliseconds);
//which brings me 300000
(int)TimeSpan.FromMinutes(5).Milliseconds;
//which brings me 0
与(int)
相比,为什么投射Convert.ToInt32()
结果会有所不同?
两者都不应该带来相同的结果吗?
答案 0 :(得分:8)
在第一个版本中,您使用的是TotalMilliseconds
属性 - 在您使用Milliseconds
的第二个版本中。
举一个更简单的例子,没有转换或调用Convert.ToInt32
:
TimeSpan ts = TimeSpan.FromHours(49);
Console.WriteLine(ts.Hours); // 1 (it's two days and one hour)
Console.WriteLine(ts.TotalHours); // 49 (it's 49 hours in total)
答案 1 :(得分:3)
毫秒只是5秒的毫秒PORTION。在第二个上也使用TotalMilliseconds。
答案 2 :(得分:2)
在第一个示例中,您使用TotalMilliseconds,然后使用Milliseconds。
答案 3 :(得分:1)
您的错误是在第二个示例中,您正在调用.Milliseconds
属性,而不是.TotalMilliseconds
属性。
前者以毫秒为单位返回5分钟。后者返回5分钟的毫秒部分,即零。
演员与皈依者是一个红鲱鱼!
答案 4 :(得分:1)
你从第二行遗漏了“总计”。所以,这很有效。
(int)TimeSpan.FromMinutes(5).TotalMilliseconds;
答案 5 :(得分:1)
它们是相同的......你使用的是TotalMilliseconds和Milliseconds。第一个是5分钟内的总毫秒数,而第二个是剩余部分,或者如果你想在'00:05:00.000'中显示时间IE'000'将显示的值
答案 6 :(得分:1)
问题不在于转换,而在于您要比较TotalMilliseconds和Milliseconds!