Ответ 1
Разве нет метода TimeSpan.Duration
? Я думаю, что это справится с тем, что вы пытаетесь сделать.
В моем выходе сетки я вычисляю TimeSpan
и беру его TotalHours
. например.
(Eval("WorkedHours") - Eval("BadgedHours")).TotalHours
Цель состоит в том, чтобы показать TotalHours
как 39:44
, поэтому мне нужно преобразовать значение из 7.5
в 07:30
. Это не проблема... если это не отрицательно!
Я могу создать объект TimeSpan
из Hours
с помощью
TimeSpan.FromHours( (Eval("WorkedHours") - Eval("BadgedHours")).TotalHours)
Если это отрицательно, я не могу преобразовать его в DateTime
, чтобы использовать метод .ToString("HH:mm")
, а объект TimeSpan
не поддерживает строку формата.
Разве нет метода TimeSpan.Duration
? Я думаю, что это справится с тем, что вы пытаетесь сделать.
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"
Это также будет работать правильно, если период времени больше 24 часов.
Просто умножьте его на -1 или используйте функцию абсолютного значения.
В классе TimeSpan существует метод Negate.
Ссылка на документацию MSDN: Метод TimeSpan.Negate()
его рабочий .try this
mytimespam.Negate();
Простое решение:
string format = "HH:mm";
if(hours < 0)
format = "-" + format;
hours = Math.Abs(hours)
Привет, я работал над этим кодом, который я писал, надеюсь, что он поможет
(результаты) является переменной int
(TimeSpan.FromMinutes(result)) < TimeSpan.Zero ? "-" + TimeSpan.FromMinutes(result).ToString(@"hh\:mm") : "" + TimeSpan.FromMinutes(result).ToString(@"hh\:mm");
Я проверял каждый где. Но я не получил правильный ответ, почему я использовал этот способ, чтобы закончить
TimeSpan diff = actualout.Subtract(actualin);
string a =(diff.ToString()).ToString();
if(a.Contains("-"))
{
diff = new TimeSpan(0,0,0,0);
}
TimeSpan Diff = Date1 - Date2;
if ((int)Diff.TotalDays < 0) { // your code }