有一个DateTime变量,例如:
DateTime testDate = new DateTime(2011,12,15,00,00,00);
Run Code Online (Sandbox Code Playgroud)
如何在今天的每个小时实现一个foreach循环?
就像是:
foreach (int myHour in testDate.Date)
{
}
Run Code Online (Sandbox Code Playgroud)
但是这种方式不能编译.
dkn*_*ack 16
循环24并不是一个好主意,因为这在25或23小时(时间变化,夏令时......)的日子里不起作用.
使用AddHour功能和目标日期.
DateTime testDate = new DateTime(2011, 12, 15, 00, 00, 00, DateTimeKind.Local);
DateTime endDate = testDate.AddDays(1);
while (testDate.Date != endDate.Date)
{
Console.WriteLine(testDate.ToString());
testDate = testDate.AddHours(1);
}
Run Code Online (Sandbox Code Playgroud)
for改为使用:
DateTime date = new DateTime(2011,12,15);
for(int i = 0; i < 24; i++)
{
DateTime time = date.AddHours(i);
...
}
Run Code Online (Sandbox Code Playgroud)
如果你真的想使用foreach,你可以创建一个像这样的扩展方法:
static class DateTimeExtensions
{
public static IEnumerable<DateTime> GetHours(this DateTime date)
{
date = date.Date; // truncate hours
for(int i = 0; i < 24; i++)
{
yield return date.AddHours(i);
}
}
}
...
DateTime date = new DateTime(2011,12,15);
foreach (DateTime time in date.GetHours())
{
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5425 次 |
| 最近记录: |