如何在C#中循环遍历一个时间范围?

5
我希望将开始时间定义为下午6点,结束时间定义为晚上9点。这个时间范围(类似下面的内容)用于每天的日程安排。我该如何在for循环中实现它?感谢您的回复。
6:00 PM 
6:30 PM 
7:00 PM 
7:30 PM 
8:00 PM 
8:30 PM 
9:00 PM

请展示一些源代码...你尝试过什么?有什么问题没有解决吗? - Yahia
你的时间范围是如何定义的? - Oded
那么日期部分呢?它无关紧要吗? - Lucero
@Lucero 日期无关紧要,因为每天使用相同的时间范围。 - SƲmmēr Aƥ
@Oded 那是我不知道的事情。我知道如何循环遍历日期范围,但对于我的情况,我只想要时间。 - SƲmmēr Aƥ
@Yahia 我没有任何概念。这里有一个遍历日期范围的例子。https://dev59.com/a3I-5IYBdhLWcg3wc3-w. 然而,我想要的是仅遍历时间。 - SƲmmēr Aƥ
5个回答

6

您可以使用while循环。

var startTime = DateTime.Parse("2012-01-28 18:00:00");
var endTime = startTime.AddHours(3);
while (startTime <= endTime)
{
  System.Console.WriteLine(startTime.ToShortTimeString());
  startTime = startTime.AddMinutes(30);
}

2

使用TimeSpan的简单示例:

for (int minutes = 6 * 60; minutes <= 9 * 60; minutes += 30)
{
    Console.WriteLine(TimeSpan.FromMinutes(minutes));
}

你可能想使用 12+612+9,因为现在是下午。;) - Lucero
@Lucero 嗯,实际上 TimeSpan 表示的是一个时间间隔,而不是日期(即所表示的时间数量与具体的日期/小时无关)。我不确定在 TimeSpan 中添加“下午”这一概念是否相关。 - ken2k
@key2k,我知道TimeSpan是什么。关键是自午夜以来的时间跨度需要加上12表示下午,否则当它与(纯)日期相加时会得到上午时间。 - Lucero

0
你可以尝试使用 DateTime.Now.Hour 获取小时数,并使用 if 条件语句进行判断。如下面的例子所示:
if (DateTime.Now.Hour >= 9 && DateTime.Now.Hour <= 18) { Console.WriteLine("Bonjour " + Environment.UserName); }
                    else
                    {
                        Console.WriteLine("Bonsoir " + Environment.UserName);
                    }

0
如果您需要在当前日期中使用时间范围,例如从上午10:00:00到下午17:00:00,则可以使用以下代码。
 DateTime startTime = DateTime.Parse("10:00:00");

    DateTime endTime = DateTime.Parse("17:00:00");
while (startTime <= endTime)
{
  System.Console.WriteLine(startTime.ToShortTimeString());
  startTime = startTime.AddMinutes(30);
}

在你的代码中加入一些解释会极大地帮助你的回答变得有用。 - Jonathan Drapeau

0

当您使用TimeSpan(时间而不是DateTime中的日期和时间)时

TimeSpan interval = new TimeSpan(0, 30, 0);
TimeSpan beginTime = new TimeSpan(18, 00, 00);
TimeSpan endTime = new TimeSpan(21, 00, 00);

for(TimeSpan tsLoop = beginTime; tsLoop < endTime; tsLoop = tsLoop.Add(interval))
{

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接