c# – 如何处理Rounding-TimeSpan?

我取两个DateTime字段之间的区别,并将其存储在TimeSpan变量中,现在我必须通过以下规则来舍入TimeSpan:

如果TimeSpan中的分钟数小于30,那么分钟和秒必须设置为零,
如果TimeSpan中的分钟数等于或大于30,则小时数必须增加1,分钟数和秒数必须设置为零.

TimeSpan也可以是负值,所以在这种情况下我需要保留符号..

如果TimeSpan不是负值,我可以达到要求,虽然我已经编写了一个代码,我对它的低效率感到不满意,因为它更笨重.

请建议我一种更简单有效的方法.

感谢和问候,

这是我的代码,当TimeSpan不是负值时工作正常.

TimeSpan time_span = endTime.Subtract(startTime);
            TimeSpan time_span1;
            if (time_span.Minutes >= 30)
            {
                time_span1 = new TimeSpan(time_span.Hours + 1,0);
            }
            else
            {
                time_span1 = new TimeSpan(time_span.Hours,0);
            }

time_span1将包含结果..

解决方法

怎么样:
public static TimeSpan Round(TimeSpan input)
{
    if (input < TimeSpan.Zero)
    {
        return -Round(-input);
    }
    int hours = (int) input.TotalHours;
    if (input.Minutes >= 30)
    {
        hours++;
    }
    return TimeSpan.FromHours(hours);
}

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...