2014-04-29 20 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

的文档感谢您的帮助和输入,与代码中的大部分内容一样,有许多不同的方式来执行操作。我会赞成,我感谢你给我一个简单的做事方式。 –