2015-08-06 2 views
-1
int serviceday = 0; 
         int servicehour = 0; 
         int serviceminute = 0; 

         if (ServiceDay == null || ServiceDay == "") 
         { 
          serviceday = 0; 
         } 
         else 
          Convert.ToInt32(ServiceDay); 

         if (ServiceHour == null || ServiceHour == "") 
         { 
          servicehour = 0; 
         } 
         else 
          Convert.ToInt32(ServiceHour); 

         if (ServiceMinute == null || ServiceMinute == "") 
         { 
          serviceminute = 0; 
         } 
         else 
          Convert.ToInt32(serviceminute); 

Я пытаюсь добавить дни, часы и минуты к существующему DateTime, но с использованием .addDays, .addHours и методы .addMinutes, переменная даты и времени остается одна и та же. Я знаю, когда когда-либо использую метод .addDays, мне нужно назначить новую переменную для возвращаемого значения и даже не изменять переменную datetime.Как правильно добавить день, час и минуту до существующей даты

     DateTime servicedatetime = new DateTime(); 
         servicedatetime = serviceEntry.ServiceDateTime; 

         DateTime newdatetimeDays = new DateTime(); 
         DateTime newdatetimeHours = new DateTime(); 
         DateTime newdatetimeMinutes = new DateTime(); 
         newdatetimeDays = servicedatetime.AddDays(serviceday); 
         newdatetimeHours = newdatetimeDays.AddHours(servicehour); 
         newdatetimeMinutes = newdatetimeHours.AddMinutes(serviceminute); 
+1

Эта строка кода ничего не делает: 'Convert.ToInt32 (serviceminute);' Все выглядит нулевым для меня. – LarsTech

+0

Вы делаете все правильно, уверены ли вы, что возвращаете newdatetimeMinutes, а не servicedatetime? Также вам не обязательно создавать экземпляр нового DateTime для каждого добавления, вы можете просто использовать newDateTimeDays весь путь для AddDays, AddHours и Addminutes. Наконец, вы уверены, что на самом деле вы добавляете значения, а не 0? –

+0

@NicholasEllingson Я осознал свою ошибку, я фактически не добавлял значения и только 0. Спасибо. –

ответ

1

Вы могли бы написать гораздо более компактный код

int serviceday; 
int servicehour; 
int serviceminute; 
Int32.TryParse(ServiceDay, out serviceday); 
Int32.TryParse(ServiceHour, out servicehour); 
Int32.TryParse(ServiceMinute, out serviceminute); 
DateTime finalDateTime = serviceEntry.ServiceDateTime 
         .AddDays(serviceday) 
         .AddHours(servicehour) 
         .AddMinutes(serviceminute); 

(Примечание: основная часть этого ответа берется из DavidG тот, который должен взять кредиты, просто исправить эту шумную блок КСФ, чтобы узнать, если у вас есть или не является допустимым значением)

+0

Ха-ха да, этот ответ имеет самые лучшие бит. – DavidG

2

Похоже, вы хотите добавить произвольное количество дней, часов и минут, но идут длинным путем. Вы можете сделать все это на одном дыхании:

DateTime finalDateTime = serviceEntry.ServiceDateTime 
    .AddDays(serviceday) 
    .AddHours(servicehour) 
    .AddMinutes(serviceminute); 
+1

Или: 'servicedatetime.Add (новый TimeSpan (serviceDay, serviceHour, serviceMinute, seconds: 0));' – MBulli

1

Вы должны присвоить результат из Convert.ToInt32 вызовов, в противном случае переменные не установлены, например:

serviceDay = Convert.ToInt32(ServiceDay) 
Смежные вопросы