C# Timespan Milliseconds vs TotalMilliseconds

独自空忆成欢 提交于 2019-12-12 07:38:57

问题


In the example below, why does the Milliseconds property return 0 but the TotalMilliseconds property return 5000

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

// returns 0
intervalTimespan.Milliseconds;

// returns 5000.0
intervalTimespan.TotalMilliseconds

回答1:


Simple:

  • Milliseconds are the remaining milliseconds, that don't form a whole second.
  • TotalMilliseconds is the complete duration of the timespan expressed as milliseconds.



回答2:


Because Milliseconds returns the Milliseconds portion, and TotalMilliseconds returns the total milliseconds represented by the Timespan

Example: 0:00:05.047

Milliseconds: 47

Total Milliseconds: 5047




回答3:


This hapens because intervalTimespan.Milliseconds; returns the milisecond component of the timespan. In your timespan constructor you only have hour minute and second component, that is why the result is 0. intervalTimespan.TotalMilliseconds - This gets you the total miliseconds of the timespan. Ex:

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

// returns 5
intervalTimespan.Milliseconds;

// returns 5
intervalTimespan.TotalMilliseconds



回答4:


It's obvious, Miliseconds returns just the milisenconds part of your TimeSpan, while TotalMiliseconds calculates how many miliseconds are in time represented by TimeSpan.

In your case, first returns 0 because you have exactly 5 seconds, second returns 5000 because 5s == 5000ms




回答5:


TimeSpan has other overloads

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

Milliseconds property will return the actual milliseconds value

TotalMilliseconds returnss overall milliseconds including days, hour, minute & seconds




回答6:


One important thing other things don't mention, is that (according to the docs):

The Milliseconds property represents whole milliseconds, whereas the TotalMilliseconds property represents whole and fractional milliseconds.

That is also deductible from the remarks of TotalMilliseconds:

This property converts the value of this instance from ticks to milliseconds.

This has a huge implication, IMO, because if you want the most precise representation in seconds or milliseconds, you must use TotalSeconds or TotalMilliseconds properties, both of them are of type double.



来源:https://stackoverflow.com/questions/5484382/c-sharp-timespan-milliseconds-vs-totalmilliseconds

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!