c#中的DateTime循环
本文关键字:循环 DateTime 中的 | 更新日期: 2023-09-27 18:16:19
可能周五的逻辑有点难以思考。这可能是一个简单的逻辑。
我的问题是我有昨天的约会时间。我的hourValue是7,8,9…23,0,1,2,3,6。
DateTime yesterday_datetime = DateTime.Now.Date.AddDays(-1);
DateTime todays_datetime = new DateTime();
在Hours循环中,我需要在下面的代码中添加hourvalue。
todays_datetime = yesterday_datetime.AddHours(hourValue);
但当谈到小时值0时,它只取昨天的日期,而不是今天的日期。
我添加了从7、8、9…23、0、1、2、3、4、5、6到2013年5月30日的小时数,所以如果将7添加到2013年05月30日,那么它将是2013年05日07时00分,以此类推,直到23日,它是2013年5日30时00分。现在是0..6,应该是2013年5月31日00:00:00和2013年5日31日01:00:00,依此类推
我是不是遗漏了什么?如有任何帮助,我们将不胜感激。
干杯
如果你做了一些类似的事情
var now = DateTime.Now
for (var time = now.AddDays(-1); time < now; time = time.AddHours(1))
{
// time enumerates the hours between yesterday and now.
}
它应该很好用。
或者,如果你不喜欢循环,
var yesterday = DateTime.Now.AddDays(-1);
var hourTimes = Enumerable.Range(0, 24)
.Select(hourValue => yesterday.Add(hourValue));
我可能没有完全理解这个问题:如果你有hourValue 0并将其添加到昨天的日期时间中,那么这个值不会改变。正确的
我不确定你是否想要这个,但你可以试试这样的东西:
while (yesterday_datetime <= todays_datetime)
{
// some logic
yesterday_datetime = yesterday_datetime.AddHours(hourValue);
}
您将在dateTime中循环,直到yesterday_datetime
获得与todays_datetime
相同的日期时间,即hourValue
的小时。您必须确认hourValue
不是0。
您需要更正您的小时值:
您现在的价值观:
7,8,9…23,0,1,2,3,6。
您的价值观应该是:
7,8,9…23,24,25
否则,如果你调用"AddHours(0(",它仍然是昨天的日期:
Console.WriteLine(
(yesterday_datetime.AddHours(0) == yesterday_datetime).ToString()
);
打印"True">
todays_datetime = yesterday_datetime.AddHours(hourValue);
在您的代码中,您没有更新yesterday_datetime对象。即使添加了几个小时,它仍然指向前一天。您必须首先更新yesterday_datetime,将yesterday_datetime分配给todays_datetime,然后使用today_datetime进行进一步处理。
DateTime yesterday_datetime = DateTime.Now.Date.AddDays(-1);
DateTime todays_datetime = yesterday_datetime ;
todays_datetime = todays_datetime .AddHours(hourValue);
如果可能的话,您可以简单地使用:小时值:7,8,9…23,24,25,26,27,28。
我想我开始明白了。试试这个:
for (Int32 i = -24; i <= 23; i++)
{
DateTime dt = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.AddHours(i).Day, DateTime.Now.AddHours(i).Hour, DateTime.Now.AddHours(i).Minute, DateTime.Now.AddHours(i).Second);
Console.writeLine(dt.ToString());
}
现在,在美国东部时间我得到:
5/30/2013 7:52:06 AM
5/30/2013 8:52:06 AM
5/30/2013 9:52:06 AM
5/30/2013 10:52:06 AM
5/30/2013 11:52:06 AM
5/30/2013 12:52:06 PM
5/30/2013 1:52:06 PM
5/30/2013 2:52:06 PM
5/30/2013 3:52:06 PM
5/30/2013 4:52:06 PM
5/30/2013 5:52:06 PM
5/30/2013 6:52:06 PM
5/30/2013 7:52:06 PM
5/30/2013 8:52:06 PM
5/30/2013 9:52:06 PM
5/30/2013 10:52:06 PM
5/30/2013 11:52:06 PM
5/30/2013 12:52:06 AM
5/30/2013 1:52:06 AM
5/30/2013 2:52:06 AM
5/30/2013 3:52:06 AM
5/30/2013 4:52:06 AM
5/30/2013 5:52:06 AM
5/30/2013 6:52:06 AM
5/31/2013 7:52:06 AM
5/31/2013 8:52:06 AM
5/31/2013 9:52:06 AM
5/31/2013 10:52:06 AM
5/31/2013 11:52:06 AM
5/31/2013 12:52:06 PM
5/31/2013 1:52:06 PM
5/31/2013 2:52:06 PM
5/31/2013 3:52:06 PM
5/31/2013 4:52:06 PM
5/31/2013 5:52:06 PM
5/31/2013 6:52:06 PM
5/31/2013 7:52:06 PM
5/31/2013 8:52:06 PM
5/31/2013 9:52:06 PM
5/31/2013 10:52:06 PM
5/31/2013 11:52:06 PM
5/31/2013 12:52:06 AM
5/31/2013 1:52:06 AM
5/31/2013 2:52:06 AM
5/31/2013 3:52:06 AM
5/31/2013 4:52:06 AM
5/31/2013 5:52:06 AM
5/31/2013 6:52:06 AM