2013-08-06 102 views
0

在這裏我把StartDate & EndDate如日期時間& StartTimeEndTime隨着時間。我需要更改StartDateEndDate的時間部分。然後添加StartTime & EndTime它。這是我的嘗試。但在最後一部分,它顯示我錯誤。DateTime格式錯誤

錯誤是:字符串未被識別爲有效的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#中,大多數系統類型都重載了+運算符,只是將它們加在一起。所以你也應該從picker中取出Date對象,而不是將它轉換爲字符串。

編輯:現在最終的日期時間將是從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; 

編輯:我不知道如何設置你採摘的日期時間,你可能需要調整的那部分代碼。

+0

我只想改變日期時間選擇器時間部分並添加時間選取時間。 – Johan

1

不使用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

(如果您解析StartTimeDateTime然後使用TimeOfDay屬性來獲取TimeSpan) 或

DateTime Result = StartDate.Add(StartTime);