2014-01-17 2 views
-5

Я работаю на калькуляторе, когда я стараюсь получать точно количество каникул, используемых за один месяц.Как сделать мой расчет более точным

Это прекрасно работает, когда я заказываю день дыры. Но если я хочу несколько часов или всего 1/2, он «не работает», он отображается как целый день.

Как я могу сделать мой расчет более точным?

public double[] GetMonthReport(int year) 
    { 
     double[] yearMonths = new double[13]; 
     if (this.HtVacationDays.Any()) 
     { 
     } 
     { 
      foreach (ZvVacationDay vacationDay in this.ZvVacationDay) 
      { 
       foreach (DateTime vacationDayDate in vacationDay.GetDates()) 
       { 
        if (vacationDayDate.Year == year) 
        { 
         yearMonths[vacationDayDate.Month] += 1; 
        } 
       } 
      } 
     } 
     return yearMonths; 
    } 

В моей ZvVacationDay у меня есть FromDate (DateTime) и Todate (DateTime), а также название как VARCHAR и т.д. ...

Вот пример для моих данных в БД. Теперь для "всего" дня отпуска

FromDate 2009-08-17 08: 00: 00: 000 Todate 2009-08-17 16: 00: 00: 000

Спасибо за помощь и быстро ответ !

+2

Так вы получаете _date_. Как вы получаете количество часов? –

+1

Также ваш оператор 'if' не выполняет ничего - после него он имеет пустой (' ''} ') блок. –

+1

Как вы сможете сказать, что у кого-то был только полдня? –

ответ

0

псевдо-код будет:

 if (vacationDayDate.Year == year) 
     { 
      if({isHalfDay}) 
       yearMonths[vacationDayDate.Month] += 0.5; 
      else // is full day 
       yearMonths[vacationDayDate.Month]++; 
     } 

Или более кратко:

 if (vacationDayDate.Year == year) 
     { 
      yearMonths[vacationDayDate.Month] += {isHalfDay} ? 0.5 : 1.0; 
     } 
+0

my Я спрашиваю, что это такое ({isHalfDay})? – TamoDaleko

+0

Это все, что вам нужно, чтобы определить, является ли отпуск половиной или целым днем. –

+0

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

0

Вам нужно знать, сколько времени они сняли.

Вы можете либо хранить выходные дней, как количество часов/часть выходных дней, чтобы ваша итерация становится

foreach(TimeSpan vacationTimeOff in vacationDay.GetTimeOff()) 

или имеет RAHalfVacationDays и итерацию по этому поводу.

Как только у вас есть частичные дни в качестве источника данных становится тривиальным

yearMonths[vacationDayDate.Month] += timeOff; 
Смежные вопросы