2013-08-06 4 views
0

В здесь я беру StartDate & EndDate как время дата & StartTime, EndTime как время. Мне нужно изменить временную часть от StartDate и EndDate. Затем добавьте StartTime & EndTime. Вот моя попытка. Но в последней части это показывает мне ошибку.DateTime формат неправильно

Ошибка: String не был признан действительным DateTime

  string StartTime = ""; 
      string EndTime = ""; 

      DateTime StartDate = Convert.ToDateTime(RadDatePickerStart.SelectedDate); 
      DateTime EndDate = Convert.ToDateTime(RadDatePickerEnd.SelectedDate); 

      if (RadTimePickerStart.SelectedDate != null) 
       StartTime = RadTimePickerStart.SelectedDate.Value.ToString("HH:mm"); 

      if (RadTimePickerEnd.SelectedDate != null) 
       EndTime = RadTimePickerEnd.SelectedDate.Value.ToString("HH:mm"); 

      DateTime NewStartDate = Convert.ToDateTime(StartDate + " " + StartTime);<-- In here shows the error 
      DateTime NewEndDate = Convert.ToDateTime(EndDate + " " + EndTime); 

На самом деле мне нужно добавить дату к времени, в здесь мне нужно изменить время часть из StartDate & добавить к нему время начала.

+0

Ну, вы точно указали * что * значение является результатом «StartDate +» «+ StartTime»? – Arran

+0

Какова ценность 'SelectedDate'? –

+2

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

ответ

2

В C# оператор + перегружен для большинства типов систем, просто добавьте их вместе. Поэтому вы также должны просто взять объект Date из сборщика, а не преобразовывать его в строку.

Редактировать: Теперь окончательный DateTime будет результатом добавления даты из RadDatePickers и времени из RadTimePickers.

  DateTime StartDate = Convert.ToDateTime(RadDatePickerStart.SelectedDate); 
      DateTime EndDate = Convert.ToDateTime(RadDatePickerEnd.SelectedDate); 

      TimeSpan StartTime, EndTime; 

      if (RadTimePickerStart.SelectedDate != null) 
       StartTime = RadTimePickerStart.SelectedDate.Value.TimeOfDay; 

      if (RadTimePickerEnd.SelectedDate != null) 
       EndTime = RadTimePickerEnd.SelectedDate.Value.TimeOfDay; 

      RadDatePickerStart.SelectedDate = StartDate + StartTime; 
      RadDatePickerEnd.SelectedDate = EndDate + EndTime; 

Edit: я не знаю, как установить DateTime ваших сборщиков, возможно, потребуется настроить эту часть кода.

+0

Нет. Я просто хочу, чтобы Alter DateTime собирал время и добавлял время для выбора времени. – Johan

1

Dont использовать Convert.ToDateTime вместо DateTime.TryParseExact и сделать string как увязав дату и время позже.

Этот фрагмент кода образец будет поможет вам,

DateTime dateasof; 
bool result = DateTime.TryParseExact("08/06/2013 13:50", "MM/dd/yyyy HH:MM", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateasof); 
if (result) 
    return dateasof; 
1

попытка ниже

DateTime StartDate = RadDatePickerStart.SelectedDate.Value; 
DateTime EndDate = RadDatePickerEnd.SelectedDate.Value; 

if (RadTimePickerStart.SelectedDate != null) 
      StartDate = StartDate.Date.Add(RadTimePickerStart.SelectedDate.Value.TimeOfDay); 
if (RadTimePickerEnd.SelectedDate != null) 
      EndDate = EndDate.Date.Add(RadTimePickerEnd.SelectedDate.Value.TimeOfDay); 
0

я думаю, основная проблема возникает в том месте, где вы конкатенации

DateTime NewStartDate = Convert.ToDateTime(StartDate + " " + StartTime);<-- In here shows the error 

Здесь StartDate у вас уже будет компонент времени, установленный по умолчанию до полуночи, и вы добавляете мех ь еще раз компонент к этому, так что это не будет анализироваться

он стал бы что-то вроде 08/06/2013 12:00:00 AM 05:00:00

Вы должны предоставить более подробную информацию, как то, что именно ваша цель

вы можете использовать DateTime Result = StartDate + StartTime;// StartTime as timespan

(если вы разбор StartTime как DateTime затем использовать TimeOfDay свойство для получения TimeSpan) или

DateTime Result = StartDate.Add(StartTime);

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