划分两个TimeSpan对象的最佳方法是什么?

Jam*_*Hay 8 c#

我想得到一个TimeSpan与另一个TimeSpan的比率(基本上是从它的总时间开始播放视频的进度).我目前的方法是获取两个TimeSpan对象的毫秒数,并将一个对象除以另一个.就像是:

        int durationInMilliseconds = totalTimeSpan.Milliseconds;
        int progressInMilliseconds = progressTimeSpan.Milliseconds;

        Double progressRatio = progressInMilliseconds / durationInMilliseconds;
Run Code Online (Sandbox Code Playgroud)

有更直接的路线吗?这是一个简单的问题,我只是好奇,如果有一个超级优雅的方式来解决它.

为所有詹姆斯干杯

JDu*_*ley 17

double progressRatio = progressTimeSpan.Ticks / (double)totalTimeSpan.Ticks;
Run Code Online (Sandbox Code Playgroud)

您必须将一个转换为double,否则C#将执行整数除法.刻度优于TotalMilliseconds,因为它是如何存储的,并避免任何转换.


Ric*_*lay 16

您应该使用TicksTotalMilliseconds,具体取决于所需的精度.毫秒是超过当前秒数的毫秒数.

至于更好的解决方案,它并不比分区简单,因此您当前的解决方案很好(减去错误).