C# 以30分钟的间隔将日期时间存储到阵列

C# 以30分钟的间隔将日期时间存储到阵列,c#,C#,我的目标是填充一个组合框,时间间隔为30分钟,持续24小时。例如,上午12:00、12:30、1:00、1:30等等。我需要知道如何将这些细节放入数组中。谢谢你,我不知道你的确切意思。我将从以下内容开始: private IEnumerable<Timespan> Get30MinuteIntervalls() { var currentValue = new Timespan(0); while (currentValue <= Timespan.FromHours(

我的目标是填充一个组合框,时间间隔为30分钟,持续24小时。例如,上午12:00、12:30、1:00、1:30等等。我需要知道如何将这些细节放入数组中。谢谢你,我不知道你的确切意思。我将从以下内容开始:

private IEnumerable<Timespan> Get30MinuteIntervalls()
{
  var currentValue = new Timespan(0);
  while (currentValue <= Timespan.FromHours(24)
  {
    yield return currentValue;
    currentValue = currentValue.Add(Timespan.FromMinutes(30));
  } 
}

var values = Get30MinuteIntervalls().ToArray();
也许:

string[] comboboxDataSource = Enumerable.Range(0, 2 * 24)
    .Select(min => DateTime.Today.AddMinutes(30 * min).ToString("h.mmtt", CultureInfo.InvariantCulture))
    .ToArray();
一种方法是在一天中迭代30分钟,并将此DateTime值和特定的字符串表示形式添加到列表中。喜欢

List<string> list = new List<string>();
DateTime start = DateTime.Today;
DateTime end = DateTime.Today.AddDays(1);

while (end > start)
{
    list.Add(start.ToString("h.mmtt", CultureInfo.InvariantCulture));
    start = start.AddMinutes(30);
}
如果要将它们作为数组,只需使用list.ToArray即可。另外,时间指示符在.NET Framework中大部分都是大写的,我没有检查它们。这意味着,当您使用tt说明符时,您将得到AM或PM,而不是AM或PM。在这种情况下,需要将这些值替换为小写

尝试:


你到底如何拯救他们?作为一根绳子?我不太确定。组合框供用户选择约会的开始时间。因此,选择该值作为日期时间后,该值将存储到列表中。我是一名网络专业的一年级学生,编程能力很差。请让我知道,如果你需要更多的细节,为什么人们不费心张贴一个原因+我只是想把他们取消。嘘。。。现在的人们……蒂姆,用h代替hh是不是更好,因为OP似乎不希望在一位数的小时里领先零?@SonerGönül:你说得对。我已经从OP的所需格式中注意到并修复了它。我遇到了“CultureInfo”的问题,当前上下文中不存在“您必须使用System.Globalization.CultureInfo或使用System.Globalization添加”;这在很多方面都是错误的。首先,AddHours接受double作为参数,而不是字符串。其次,您不需要AddHours和AddMinutes,因为如果参数为零,它们就没有任何用处。在for循环中,向d添加30分钟,但在任何地方都不使用AddMinutes的返回值,而是将原始d添加到组合框中。
 var d = new DateTime();
  d = d.Date.AddHours("0").AddMinutes("0");
  for (int i = 0; i < 48; i++)
  {
        d.AddMinutes(30);
        cbo.AddItem(d.TimeOfDay.ToString());
  }