划分两个TimeSpan对象的最佳方法是什么?
我想得到一个TimeSpan与另一个TimeSpan的比率(基本上是从它的总时间开始播放video的进度)。 我目前的方法是获取两个TimeSpan对象的毫秒数,并将一个对象除以另一个。 就像是:
int durationInMilliseconds = totalTimeSpan.Milliseconds; int progressInMilliseconds = progressTimeSpan.Milliseconds; Double progressRatio = progressInMilliseconds / durationInMilliseconds;
有更直接的路线吗? 这是一个简单的问题,我只是好奇,如果有一个超级优雅的方式来解决它。
为所有詹姆斯干杯
您应该使用Ticks或TotalMilliseconds ,具体取决于所需的精度。 毫秒是超过当前秒数的毫秒数。
至于更好的解决方案,它并不比分区简单,因此您当前的解决方案很好(减去错误)。
double progressRatio = progressTimeSpan.Ticks / (double)totalTimeSpan.Ticks;
您必须将一个转换为double,否则C#将执行整数除法。 Ticks优于TotalMilliseconds,因为它是如何存储的,并避免任何转换。
随着.NET Core 2.0的发布, TimeSpan
获得了几个新的运营商:
public TimeSpan Divide(double divisor); public double Divide(TimeSpan ts); public TimeSpan Multiply(double factor); public static TimeSpan operator /(TimeSpan timeSpan, double divisor); public static double operator /(TimeSpan t1, TimeSpan t2); public static TimeSpan operator *(double factor, TimeSpan timeSpan); public static TimeSpan operator *(TimeSpan timeSpan, double factor);
值得注意的是, TimeSpan
现在可以被另一个TimeSpan
划分:
var a = new TimeSpan(10, 0, 0); var b = new TimeSpan(0, 30, 0); var c = new TimeSpan(0, 4, 30); Console.WriteLine(a / b); // Displays: "20" Console.WriteLine(b / c); // Displays: "6.66666666666667"
利用扩展方法可以使代码更具可读性。
上述就是C#学习教程:划分两个TimeSpan对象的最佳方法是什么?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
public static double DividedBy(this TimeSpan x, TimeSpan y) { return Convert.ToDouble(x.Ticks) / y.Ticks; }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/943098.html