Подтвердить что ты не робот

Обработка отрицательных интервалов времени

В моем выходе сетки я вычисляю 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 не поддерживает строку формата.

4b9b3361

Ответ 1

Разве нет метода TimeSpan.Duration? Я думаю, что это справится с тем, что вы пытаетесь сделать.

Ответ 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"

Это также будет работать правильно, если период времени больше 24 часов.

Ответ 3

Просто умножьте его на -1 или используйте функцию абсолютного значения.

Ответ 4

В классе TimeSpan существует метод Negate.

Ссылка на документацию MSDN: Метод TimeSpan.Negate()

Ответ 5

его рабочий .try this

mytimespam.Negate();

Ответ 6

Простое решение:

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

hours = Math.Abs(hours)

Ответ 7

Привет, я работал над этим кодом, который я писал, надеюсь, что он поможет

(результаты) является переменной int

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

Ответ 8

Я проверял каждый где. Но я не получил правильный ответ, почему я использовал этот способ, чтобы закончить

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 }