Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 来自'的无效强制转换;日期时间';至';Int32';_C#_Datetime - Fatal编程技术网

C# 来自'的无效强制转换;日期时间';至';Int32';

C# 来自'的无效强制转换;日期时间';至';Int32';,c#,datetime,C#,Datetime,我正在尝试将我的datetimepicker设置为todays日期和选定的日期。然后将第二个选择器设置为明天的日期和选定的时间。我的问题是,尽管我调用了该方法,但它不会增加天数。如何更改此项以增加一天并保持所需的时间 如果删除转换,我会得到一个错误:System.DateTime.DateTime(int,int,int,int,int,int,int)的最佳重载方法匹配有一些无效参数 RadDateTimePicker1.SelectedDate = new DateTime(DateTime

我正在尝试将我的datetimepicker设置为todays日期和选定的日期。然后将第二个选择器设置为明天的日期和选定的时间。我的问题是,尽管我调用了该方法,但它不会增加天数。如何更改此项以增加一天并保持所需的时间

如果删除转换,我会得到一个错误:
System.DateTime.DateTime(int,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);

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

new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.AddDays(1).Day, 5, 30, 0);
AddDays
方法返回一个新的
DateTime
,不能将其转换为
int
。只需使用属性获取新DateTime中的日期即可

更新:@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;

DateTime。现在
可以在调用之间进行更改,最好执行以下操作:

DateTime today = DateTime.Today;
RadDateTimePicker1.SelectedDate = today.Add(new TimeSpan(17, 30, 0));
RadDateTimePicker2.SelectedDate = today.Add(new TimeSpan(1, 5, 30, 0));
试试像这样的东西

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 ;

公认的答案非常冗长(问题中的示例代码也是如此)

为什么不这样做:

RadDateTimePicker1.SelectedDate = DateTime.Today.AddHours(17.5);
RadDateTimePicker2.SelectedDate = DateTime.Today.AddHours(29.5);
或者,如果您想更清楚地了解第二行的时间成分,可以使用以下内容:

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

好的,我真的很感激!为什么没有例子显示这一点,他们只是添加。AddDays(1)?哦,好的!有道理,我查了好几个,一个也没用过。非常感谢。如果今天是1月31日,会发生什么?@UlugbekUmirov我对这个答案不是100%肯定。@UlugbekUmirov我可以问一下为什么不知道会发生什么。这很有意义,因为他们永远不需要精确的时间。非常感谢。这个代码和OP的代码做同样的事情吗?他创建了一个新的日期时间,将小时和分钟指定为17:30,但您将从现在开始添加17小时和30分钟。@Selman22我将添加到今天的
,而不是现在的
Today
已将时间归零-它相当于
DateTime。现在.Date
。不能说我以前见过这种情况,我假设头数为0和1,天数是递增的吗?你可以试着在上阅读文档,我感谢你的帮助和输入,就像大多数代码一样,有很多不同的方法来做事情。我会向上投票,我感谢你给我展示一种简单的做事方式。