C# 处理负时间跨度
在我的网格输出中,我计算一个C# 处理负时间跨度,c#,.net,datetime,timespan,C#,.net,Datetime,Timespan,在我的网格输出中,我计算一个时间跨度,并取其总小时数。e、 g (Eval("WorkedHours") - Eval("BadgedHours")).TotalHours 目标是将TotalHours显示为39:44,因此我需要将值从7.5转换为07:30。这没问题。。。除非是阴性 我可以使用从Hours创建TimeSpan对象 TimeSpan.FromHours( (Eval("WorkedHours") - Eval("BadgedHours")).TotalHours) 如果是负数
时间跨度
,并取其总小时数
。e、 g
(Eval("WorkedHours") - Eval("BadgedHours")).TotalHours
目标是将TotalHours
显示为39:44
,因此我需要将值从7.5
转换为07:30
。这没问题。。。除非是阴性
我可以使用从Hours
创建TimeSpan
对象
TimeSpan.FromHours( (Eval("WorkedHours") - Eval("BadgedHours")).TotalHours)
如果是负数,我无法将其转换为
DateTime
以使用.ToString(“HH:mm”)
方法,并且TimeSpan
对象不支持格式字符串。只需将其乘以-1或使用绝对值函数。简单的解决方案是:
string format = "HH:mm";
if(hours < 0)
format = "-" + format;
hours = Math.Abs(hours)
string format=“HH:mm”;
如果(小时<0)
format=“-”+格式;
小时=Math.Abs(小时)
静态字符串到hmstring(TimeSpan TimeSpan){
if(timespan.Ticks<0)返回“-”+ToHMString(timespan.Negate());
返回timespan.TotalHours.ToString(“#0”)+”:“+timespan.Minutes.ToString(“00”);
}
控制台写入线(ToHMString(TimeSpan.FromHours(3))//打印“3:00”
控制台写入线(ToHMString(TimeSpan.FromHours(-27.75))//印刷品“-28:45”
如果timespan超过24小时,这也将正常工作。timespan类中有一个否定方法 链接到MSDN文档:
是否有
TimeSpan.Duration
方法?我认为这将处理您正在尝试做的事情。您好,我已经将此工作转化为我一直在编写的一些代码,希望能有所帮助
(结果)是一个int变量
(TimeSpan.frommins(result))
它可以工作。试试这个
mytimespam.Negate() 我查遍了每一个地方。但我没有得到正确的答案,这就是为什么我用这种方式来完成
TimeSpan diff = actualout.Subtract(actualin);
string a =(diff.ToString()).ToString();
if(a.Contains("-"))
{
diff = new TimeSpan(0,0,0,0);
}
TimeSpan Diff=Date1-Date2; 如果((int)Diff.TotalDays<0){//您的代码}
请考虑将代码片断重新格式化为内联代码或代码段,并添加适当的平台标记(我想从您的代码段中猜测.NET)。对于Google的任何人,请使用<代码> TimeSIP.持续时间< /Code >方法。从MSDN:“返回一个新的TimeSpan对象,其值为当前TimeSpan对象的绝对值”。这是最简单的方法,只需减去两个DateTimes,对结果调用Duration(),然后执行TotalHours.time垃圾邮件,呵呵;)更简单的方法是比较if(diff
TimeSpan diff = actualout.Subtract(actualin); string a =(diff.ToString()).ToString(); if(a.Contains("-")) { diff = new TimeSpan(0,0,0,0); }