答案 0 :(得分:1)
以下是使用简单while循环执行此操作的一种方法:
var item = DateTime.Today.AddHours(14); // 14:00:00
while(item <= DateTime.Today.AddHours(16)) // 16:00:00
{
cmb.Items.Add(item.TimeOfDay.ToString(@"hh\:mm"));
item = item.AddMinutes(20);
}
答案 1 :(得分:0)
我假设您在第一个和最后一个小时内需要一些灵活性,但您确定您的间隔时间总是20分钟。
如果您可以将时间表示为简单字符串,则可以使用两个嵌套循环:
const int firstHour = 12;
const int lastHour = 14;
for (var hour = firstHour; hour < lastHour; hour++)
{
for (var minute = 0; minute <= 40; minute += 20)
{
comboBox.Items.Add($"{hour}:{minute:00}");
}
}
comboBox.Items.Add($"{lastHour}:00");
如果您希望将您的时间作为DateTime的实例,请使用此循环:
const int firstHour = 12;
const int lastHour = 14;
var time = new DateTime(2000, 1, 1, firstHour, 0, 0); //or any other suitable year,month,day
while (time.Hour < lastHour)
{
comboBox.Items.Add(time);
time = time.AddMinutes(20);
}
comboBox.Items.Add(new DateTime(time.Year, time.Month, time.Day, lastHour, 0, 0));
comboBox.FormatString = "HH:mm"; //to prevent the date from being displayed
我将firstHour
和lastHour
定义为常量以保持示例简单,您可以将它们转换为变量,方法的参数或对您更有用的任何内容。