首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >你能舍入一个.NET TimeSpan对象吗?

你能舍入一个.NET TimeSpan对象吗?
EN

Stack Overflow用户
提问于 2008-12-03 21:00:11
回答 8查看 27.1K关注 0票数 27

你能舍入一个.NET TimeSpan对象吗?

我的Timespan值为: 00:00:00.6193789

有没有一种简单的方法可以将它保持为TimeSpan对象,但将其舍入为类似于

00:00:00.62?

EN

回答 8

Stack Overflow用户

发布于 2008-12-03 21:12:33

TimeSpan只不过是'Ticks‘成员的包装器。从另一个TimeSpan的节拍的四舍五入版本创建一个新的TimeSpan是相当容易的。

代码语言:javascript
复制
TimeSpan t1 = new TimeSpan(2345678);
Console.WriteLine(t1);
TimeSpan t2 = new TimeSpan(t1.Ticks - (t1.Ticks % 100000));
Console.WriteLine(t2);

提供:

代码语言:javascript
复制
00:00:00.2345678
00:00:00.2300000
票数 17
EN

Stack Overflow用户

发布于 2016-12-17 07:17:23

考虑到一些关于舍入到秒的注释,我认为舍入到任何TimeSpan都会很好:

代码语言:javascript
复制
public static TimeSpan Round(this TimeSpan ts, TimeSpan rnd) {
    if (rnd == TimeSpan.Zero)
        return ts;
    else {
        var rndTicks = rnd.Ticks;
        var ansTicks = ts.Ticks + Math.Sign(ts.Ticks) * rndTicks / 2;
        return TimeSpan.FromTicks(ansTicks - ansTicks % rndTicks);
    }
}
public static TimeSpan Round(this TimeSpan ts) => ts.Round(TimeSpan.FromSeconds(1));

在处理小数单位(per @ToolmakerSteve)时,考虑到舍入到刻度的潜在不准确性,我添加了一个小数舍入选项,用于需要更高精度并舍入为计算机小数秒的情况:

代码语言:javascript
复制
public static TimeSpan RoundToFraction(this TimeSpan ts, long num, long den) => (den == 0.0) ? TimeSpan.Zero : TimeSpan.FromTicks((long)Math.Round(Math.Round((double)ts.Ticks * (double)den / num / TimeSpan.TicksPerSecond) * (double)num / den * TimeSpan.TicksPerSecond));
public static TimeSpan RoundToFraction(this TimeSpan ts, long den) => (den == 0.0) ? TimeSpan.Zero : TimeSpan.FromTicks((long)(Math.Round((double)ts.Ticks * den / TimeSpan.TicksPerSecond) / den * TimeSpan.TicksPerSecond));
票数 7
EN

Stack Overflow用户

发布于 2008-12-03 21:11:12

代码语言:javascript
复制
new TimeSpan(tmspan.Hours, tmspan.Minutes, tmspan.Seconds, (int)Math.Round(Convert.ToDouble(tmspan.Milliseconds / 10)));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/338658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档