Handle negative time spans

99封情书 提交于 2019-12-30 02:33:05

问题


In my output of a grid, I calculate a TimeSpan and take its TotalHours. e.g.

(Eval("WorkedHours") - Eval("BadgedHours")).TotalHours

The goal is to show the TotalHours as 39:44, so I need to convert the value from 7.5 to 07:30. This is no problem... unless it's negative!

I can create a TimeSpan object from Hours with

TimeSpan.FromHours( (Eval("WorkedHours") - Eval("BadgedHours")).TotalHours)

If it's negative, I can't convert it to a DateTime to use the .ToString("HH:mm") method, and the TimeSpan object does not support the format string.


回答1:


Isn't there a TimeSpan.Duration method? I think this would handle what you are trying to do.




回答2:


static string ToHMString(TimeSpan timespan) { 
    if (timespan.Ticks < 0) return "-" + ToHMString(timespan.Negate());

    return timespan.TotalHours.ToString("#0") + ":" + timespan.Minutes.ToString("00");
}

Console.WriteLine(ToHMString(TimeSpan.FromHours(3)));       //Prints "3:00"
Console.WriteLine(ToHMString(TimeSpan.FromHours(-27.75)));  //Prints "-28:45"

This will also work correctly if the timespan is longer than 24 hours.




回答3:


Just multiply it by -1 or use an absolute value function.




回答4:


There is a Negate method in the TimeSpan class.

Link to the MSDN documentation: TimeSpan.Negate Method()




回答5:


its working .try this

mytimespam.Negate();




回答6:


The simple solution would be to do:

string format = "HH:mm";
if(hours < 0)
  format = "-" + format;

hours = Math.Abs(hours)



回答7:


Hi i worked this into a bit of code i have been writing, hope it helps

(results) is an int variable

(TimeSpan.FromMinutes(result)) < TimeSpan.Zero ? "-" + TimeSpan.FromMinutes(result).ToString(@"hh\:mm") : "" + TimeSpan.FromMinutes(result).ToString(@"hh\:mm");




回答8:


I checked to every where.But i didnt get a correct answer that why i used this way to finish

TimeSpan diff = actualout.Subtract(actualin);
 string a =(diff.ToString()).ToString();
if(a.Contains("-"))
 {        
 diff = new TimeSpan(0,0,0,0);
}



回答9:


TimeSpan Diff = Date1 - Date2;

if ((int)Diff.TotalDays < 0) { // your code }


来源:https://stackoverflow.com/questions/1018643/handle-negative-time-spans

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!