我希望将开始时间定义为下午6点,结束时间定义为晚上9点。这个时间范围(类似下面的内容)用于每天的日程安排。我该如何在for循环中实现它?感谢您的回复。
6:00 PM
6:30 PM
7:00 PM
7:30 PM
8:00 PM
8:30 PM
9:00 PM
6:00 PM
6:30 PM
7:00 PM
7:30 PM
8:00 PM
8:30 PM
9:00 PM
您可以使用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);
}
使用TimeSpan
的简单示例:
for (int minutes = 6 * 60; minutes <= 9 * 60; minutes += 30)
{
Console.WriteLine(TimeSpan.FromMinutes(minutes));
}
12+6
和 12+9
,因为现在是下午。;) - LuceroTimeSpan
表示的是一个时间间隔,而不是日期(即所表示的时间数量与具体的日期/小时无关)。我不确定在 TimeSpan
中添加“下午”这一概念是否相关。 - ken2kTimeSpan
是什么。关键是自午夜以来的时间跨度需要加上12表示下午,否则当它与(纯)日期相加时会得到上午时间。 - Luceroif (DateTime.Now.Hour >= 9 && DateTime.Now.Hour <= 18) { Console.WriteLine("Bonjour " + Environment.UserName); }
else
{
Console.WriteLine("Bonsoir " + Environment.UserName);
}
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);
}
当您使用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))
{
}