2014-04-29 141 views
0

我想將我的datetimepicker設置爲今天的日期和選定的。然後將第二個選取器設置爲明日期和選定時間。我的問題是,儘管我稱之爲那種方法,但它不會增加日子。我怎樣才能改變這一點,增加一天,並保持所需的時間?從'DateTime'到'Int32'無效投射

如果刪除轉換,我得到一個錯誤:System.DateTime.DateTime(int, int, int, int, int, int)的最佳重載的方法匹配具有一些無效參數

RadDateTimePicker1.SelectedDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 17, 30, 0); 
RadDateTimePicker2.SelectedDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, Convert.ToInt32(DateTime.Now.AddDays(1)), 5, 30, 0); 

回答

2

我想你想DateTime.Now.AddDays(1).Day

new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.AddDays(1).Day, 5, 30, 0); 

AddDays方法返回一個新DateTime ,則無法將其轉換爲int。只需使用Day屬性即可在新的日期時間內獲得一天。

更新: @UlugbekUmirov是正確的關於他的評論,爲了解決這個問題,你可以嘗試:

var now = DateTime.Now; 
DateTime first = new DateTime(now.Year,now.Month,now.Day, 17, 30, 0); 
DateTime second; 
if (now.Day == DateTime.DaysInMonth(now.Year, now.Month)) 
{ 
    if(DateTime.Now.Month == 12) 
      second = new DateTime(now.Year+1, 1, 1, 5, 30, 0); 
     else 
      second = new DateTime(now.Year, now.Month+1, 1, 5, 30, 0); 
} 
else 
{ 
    second = new DateTime(now.Year, now.Month, now.Day+1, 5, 30, 0); 
} 
RadDateTimePicker1.SelectedDate = first; 
RadDateTimePicker2.SelectedDate = second; 
+0

好,我真的很感激!爲什麼沒有例子顯示他們只添加.AddDays(1)? –

+0

哦,好的!有道理我擡頭看了幾眼,沒有用過。謝謝! –

+0

今天是1月31日會發生什麼? –

1

DateTime.Now可以通話之間切換,這是更好地做到以下幾點:

DateTime today = DateTime.Today; 
RadDateTimePicker1.SelectedDate = today.Add(new TimeSpan(17, 30, 0)); 
RadDateTimePicker2.SelectedDate = today.Add(new TimeSpan(1, 5, 30, 0)); 
+0

這是有道理的,因爲他們永遠不需要精確的時間。謝謝! –

+0

這個代碼是否和OP的代碼做同樣的事情?他創建了一個新的DateTime,指定小時和分鐘爲17:30,但是現在要添加17小時30分鐘。 –

+0

@ Selman22我添加到'今天',而不是'現在'。 '今天'已經調零了 - 它相當於'DateTime.Now.Date'。 –

2

試着這麼做

DateTime today = DateTime.Now.Date + new TimeSpan(0 , 17 , 30 , 0) ; 
DateTime tomorrow = today.Date  + new TimeSpan(1 , 5 , 30 , 0) ; 

RadDateTimePicker1.SelectedDate = today ; 
RadDateTimePicker2.SelectedDate = tomorrow ; 
+0

不能說我以前見過這種方式,我假設頭號又名0和1,是增加的日子嗎? –

+1

您可能會嘗試閱讀['TimeSpan'構造函數重載](http://msdn.microsoft.com/en-us/library/system.timespan.timespan(v = vs.110).aspx) –

1

接受的答案非常冗長(正如您問題中的示例代碼)。

爲什麼不這樣:

RadDateTimePicker1.SelectedDate = DateTime.Today.AddHours(17.5); 
RadDateTimePicker2.SelectedDate = DateTime.Today.AddHours(29.5); 

或者,如果你想成爲關於第二行的時間分量更清晰,你也可以使用這樣的:

RadDateTimePicker2.SelectedDate = DateTime.Today.AddDays(1).AddHours(5.5); 
+0

的文檔感謝您的幫助和輸入,與代碼中的大部分內容一樣,有許多不同的方式來執行操作。我會贊成,我感謝你給我一個簡單的做事方式。 –