C#Timespan Milliseconds vs TotalMilliseconds

时间:2011-03-30 09:18:14

标签: c# .net timespan

在下面的示例中,为什么Milliseconds属性返回0但TotalMilliseconds属性返回5000

// 5 seconds
TimeSpan intervalTimespan = new TimeSpan(0, 0, 5);

// returns 0
intervalTimespan.Milliseconds;

// returns 5000.0
intervalTimespan.TotalMilliseconds

6 个答案:

答案 0 :(得分:62)

因为Milliseconds返回Milliseconds部分,而TotalMilliseconds返回Timespan

所代表的总毫秒数

示例:0:00:05.047

毫秒:47

总毫秒数:5047

答案 1 :(得分:60)

简单:

  • 毫秒是剩余的毫秒,不会形成整秒。
  • TotalMilliseconds是以毫秒表示的完整持续时间。

答案 2 :(得分:2)

这是因为intervalTimespan.Milliseconds;返回时间跨度的毫秒分量。 在你的timepan构造函数中,你只有小时分钟和第二个分量,这就是结果为0的原因。 intervalTimespan.TotalMilliseconds - 这可以获得时间跨度的总毫秒数。 例如:

// 5 miliseconds
TimeSpan intervalTimespan = new TimeSpan(0, 0,0,0,5);

// returns 5
intervalTimespan.Milliseconds;

// returns 5
intervalTimespan.TotalMilliseconds

答案 3 :(得分:1)

很明显,Miliseconds只返回TimeSpan的二十分之一部分,而TotalMiliseconds则计算TimeSpan代表的时间百分比。

在你的情况下,首先返回0因为你有5秒,第二次返回5000因为5s == 5000ms

答案 4 :(得分:1)

TimeSpan还有其他重载

TimeSpan(hour, minute, seconds)
TimeSpan(days, hour, minute, seconds)
TimeSpan(days, hour, minute, seconds, milliseconds)

毫秒属性将返回实际的毫秒值

TotalMilliseconds返回总毫秒数,包括天,小时,分钟和秒

答案 5 :(得分:0)

其他事情未提及的一件重要事情是(根据文档):

  

newVersion属性代表整毫秒,而Milliseconds属性代表整数和小数毫秒。

这也可以从TotalMilliseconds的言论中扣除:

  

此属性将实例的值从滴答转换为毫秒。

这对IMO有很大的影响,因为如果要以秒或毫秒为单位最精确的表示形式,则必须使用TotalMillisecondsTotalSeconds属性的类型为TotalMilliseconds