2009-05-10 7 views

ответ

135

Вы можете сделать следующее:

TimeSpan duration = b - a; 

Там множество встроенных методов в классе TimeSpan, чтобы делать то, что вам нужно, то есть

duration.TotalSeconds 
duration.TotalMinutes 

Дополнительная информация может быть найдена here.

+0

TimeSpan span = x.ShiftEndTime.Subtract (x.ShiftStartTime) if (span.TotalHours == 24) {do ...} – abmv

15

Попробуйте следующее

double hours = (b-a).TotalHours; 

Если вы просто хотите, разница час за исключением разницы в днях вы можете используйте следующее:

int hours = (b-a).Hours; 

Разница между этими двумя свойствами в основном проявляется, когда разница во времени составляет более 1 день. Свойство Hours будет сообщать только фактическую часовую разницу между двумя датами. Таким образом, если две даты отличались на 100 лет, но произошли в то же время в течение дня, часы вернутся 0. Но TotalHours вернет разницу между общим количеством часов, которое произошло между двумя датами (в этом случае 876 000 часов).

Другое отличие состоит в том, что TotalHours вернет дробные часы. Это может быть или не быть тем, что вы хотите. Если нет, Math.Round может настроить его по своему вкусу.

+0

Все еще неправильно. TotalHours - это двойной, возвращающий целые и дробные часы. –

+2

@Vilx, не обязательно неправильно. Цель OP неоднозначна – JaredPar

+0

Правильный ответ на вопрос, он хочет, чтобы результат был таким, каким он будет. Конечно, он мог легко обойти TotalHours, если этого хочет. –

2

Вы, возможно, ищете:

int Difference = (a-b).Hours; 
+0

Это дает мне ответ 1? – abmv

+0

На самом деле должно быть int Разница = (a-b). Всего часов; –

0
TimeSpan X = b - a; 

X.totalhours можно использовать с большим больше свойств TimeSpan.

0

Временной разброс ч/б во времени будет показан с использованием этого метода.

private void HoursCalculator() 
    { 
     var t1 = txtfromtime.Text.Trim(); 
     var t2 = txttotime.Text.Trim(); 
     var Fromtime = t1.Substring(6); 
     var Totime = t2.Substring(6); 
     if (Fromtime == "M") 
     { 
      Fromtime = t1.Substring(5); 
     } 
     if (Totime == "M") 
     { 
      Totime = t2.Substring(5); 
     } 

     if (Fromtime=="PM" && Totime=="AM") 
     { 
      var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim()); 
      var dt2 = DateTime.Parse("1900-01-02 " + txttotime.Text.Trim()); 
      var t = dt1.Subtract(dt2); 
      //int temp = Convert.ToInt32(t.Hours); 
      //temp = temp/2; 
      lblHours.Text =t.Hours.ToString() + ":" + t.Minutes.ToString(); 

     } 
     else if (Fromtime == "AM" && Totime == "PM") 
     { 
      var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim()); 
      var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim()); 
      TimeSpan t = (dt2.Subtract(dt1)); 
      lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString(); 
     } 
     else 
     { 
      var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim()); 
      var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim()); 
      TimeSpan t = (dt2.Subtract(dt1)); 
      lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString(); 
     } 
    } 

использовать

вар t1 вашего идентификатора поля в фиксирует значение 4:00 утра

проверки этот код может быть полезным для кого-то.

Смежные вопросы