2017-05-03 80 views

回答

1

下面是使用一个简单的循环,而做到这一点的一种方法:

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); 
} 
+0

谢谢你的方法也可以工作<3 – HasanHajjar

+0

兄弟有没有办法像这样填充它,12:00然后13:00然后14:00 ... 16 :00 – HasanHajjar

+0

当然,只需使用'AddHours(1)'而不是'AddMinutes(20)'。 –

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"); 

如果你希望你的时间作为日期时间的情况下,使用这个循环:

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 

我定义firstHourlastHour为常数,以保持简单的例子,你可以把它们变成变量,参数FO一种方法,或任何对你更有用的方法。

+0

非常感谢,我的两种方法都适用于我<3 – HasanHajjar