C # 时间跨度毫秒 vs 总毫秒

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

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


// returns 0
intervalTimespan.Milliseconds;


// returns 5000.0
intervalTimespan.TotalMilliseconds
45607 次浏览

因为 Milliseconds返回毫秒部分,TotalMilliseconds 返回由 Timespan表示的总毫秒

例子: 0:00:05.047

毫秒47

总毫秒: 5047

简单:

  • Milliseconds是剩下的毫秒,它们不构成一整秒。
  • TotalMilliseconds是以毫秒表示的时间跨度的完整持续时间。

Miliseconds只返回 TimeSpan的毫秒部分,而 TotalMilliseconds计算 TimeSpan表示的时间是多少毫秒。

在您的示例中,首先返回 0,因为您只有5秒钟的时间; 第二次返回 5000,因为5s = = 5000ms

这是因为 intervalTimespan.Milliseconds返回时间跨度的毫秒分量。 在时间跨度构造函数中,只有小时、分钟和秒组件,这就是为什么结果为0。

intervalTimespan.TotalMilliseconds得到时间跨度的总毫秒。

例如:

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


// returns 5
intervalTimespan.Milliseconds;


// returns 5
intervalTimespan.TotalMilliseconds

TimeSpan还有其他超载:

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

Milliseconds属性返回实际的毫秒值。

TotalMilliseconds属性返回包括天、小时、分钟和秒在内的总毫秒。

还有一件重要的事情没有提到,那就是(根据文件) :

Milliseconds属性表示整个毫秒,而 TotalMilliseconds属性表示 整体和分数毫秒。

这也可从 TotalMilliseconds的评论中扣除:

此属性将此实例的值从刻度转换为毫秒。

这有一个巨大的影响,我的天,因为如果你想 最精确的描述在秒或毫秒,你必须使用 TotalSecondsTotalMilliseconds属性,它们都是类型 double