问题
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