C# DateTime转到小时/分钟/秒的第一个事件
鉴于日期时间为2015年1月1日23:00:C# DateTime转到小时/分钟/秒的第一个事件,c#,datetime,C#,Datetime,鉴于日期时间为2015年1月1日23:00: var someDate = new DateTime(2015, 1, 1, 23, 0, 0); 给定int6,这是所需的小时数,如何返回小时数为6的第一个日期时间?在这种情况下,someDate和6将返回2015年1月2日06:00时的新日期时间 我只需将小时数添加到原始日期,如果结果早于原始时间,则再添加一天: var someDate = new DateTime(2015, 1, 1, 23, 0, 0); var result = s
var someDate = new DateTime(2015, 1, 1, 23, 0, 0);
给定int
6
,这是所需的小时数,如何返回小时数为6
的第一个日期时间?在这种情况下,someDate
和6
将返回2015年1月2日06:00时的新日期时间 我只需将小时数添加到原始日期,如果结果早于原始时间,则再添加一天:
var someDate = new DateTime(2015, 1, 1, 23, 0, 0);
var result = someDate.Date.AddHours(6); // note the "Date" part
if (result < someDate) result = result.AddDays(1);
var someDate=新的日期时间(2015,1,1,23,0,0);
var result=someDate.Date.AddHours(6);//请注意“日期”部分
如果(result
我只需将小时数添加到原始日期,如果结果早于原始时间,则再添加一天:
var someDate = new DateTime(2015, 1, 1, 23, 0, 0);
var result = someDate.Date.AddHours(6); // note the "Date" part
if (result < someDate) result = result.AddDays(1);
var someDate=新的日期时间(2015,1,1,23,0,0);
var result=someDate.Date.AddHours(6);//请注意“日期”部分
如果(result
像这样的东西应该可以做到:
public DateTime FollowingHour(DateTime start, int hour)
{
DateTime atHour = start.Date.AddHours(6);
if(atHour < start)
{
atHour += TimeSpan.FromDays(1);
}
return atHour;
}
public DateTime follower hour(DateTime start,int hour)
{
DateTime atHour=start.Date.AddHours(6);
如果(在小时<开始)
{
atHour+=从天开始的时间跨度(1);
}
返回阿瑟尔;
}
像这样的东西应该可以做到:
public DateTime FollowingHour(DateTime start, int hour)
{
DateTime atHour = start.Date.AddHours(6);
if(atHour < start)
{
atHour += TimeSpan.FromDays(1);
}
return atHour;
}
public DateTime follower hour(DateTime start,int hour)
{
DateTime atHour=start.Date.AddHours(6);
如果(在小时<开始)
{
atHour+=从天开始的时间跨度(1);
}
返回阿瑟尔;
}
您只需在日期上加上一天,在结果上加上六个小时:
var someDate = new DateTime(2015, 1, 1, 23, 0, 0);
var result = someDate.Date.AddDays(1).AddHours(6);
请注意
Date
属性的使用-它将为您提供一天的开始日期,从那里可以轻松地向前导航。您只需在日期上添加一天,在结果上添加六个小时:
var someDate = new DateTime(2015, 1, 1, 23, 0, 0);
var result = someDate.Date.AddDays(1).AddHours(6);
请注意Date
属性的使用-它将为您提供当天的开始日期,从那里可以轻松地向前导航。尝试以下操作:
while(someDate.Hour != 6){
someDate = someDate.AddHours(1);
}
试试这个:
while(someDate.Hour != 6){
someDate = someDate.AddHours(1);
}
假设您指的是24小时制,您可以尝试以下方法:
public DateTime GetDate(DateTime someDate,int hour)
{
return someDate.Hour>=hour? someDate.Date.AddDays(1).AddHours(6):someDate.Date.AddHours(6);
}
假设您指的是24小时制,您可以尝试以下方法:
public DateTime GetDate(DateTime someDate,int hour)
{
return someDate.Hour>=hour? someDate.Date.AddDays(1).AddHours(6):someDate.Date.AddHours(6);
}
你可以做一个循环,不断增加一个小时,直到6小时。或者检查小时数是否小于6并加上差值,或者当大于6+时加上6+(24-当前小时)。你可以做一个循环,不断加一小时,直到小时数为6。或者检查小时数是否小于6并加上差值,或者大于6+(24-当前小时)。
result
将始终为false,因为您刚刚将小时数添加到someDate
,因此result
必须更大。@juharr请仔细阅读:我将6小时添加到someDate。约会!好的,我知道你在做什么。虽然还不清楚OP是否希望丢失当前的分和秒。@juharr“小时数为6的下一个日期时间”当然是6:00:00,因为6:00:01不是第一个。谢谢,这很有效。西方最快的枪赢得了答案result
将始终为false,因为您刚刚在someDate
中添加了小时,所以result
必须更大。@juharr请仔细阅读:我在someDate中添加了6小时。约会!好的,我知道你在做什么。虽然还不清楚OP是否希望丢失当前的分和秒。@juharr“小时数为6的下一个日期时间”当然是6:00:00,因为6:00:01不是第一个。谢谢,这很有效。西方最快的枪赢得了答案!这不适用于新日期时间(2015,1,1,0,0)其中答案应该是2015年1月1日06:00这不适用于新日期时间(2015,1,1,1,0,0)其中答案应该是2015年1月1日06:00这同样有效,但如果您从07:00开始添加,这几乎没有公认的答案那么有效。还是我错了?最多需要23次迭代,我想不会太多,但是的,被接受的答案是完美的。这也是可行的,但如果你从07:00开始添加,它的效率远不如被接受的答案。还是我错了?最多23次迭代,我想不会太多,但是的,被接受的答案是完美的。