【问题标题】:c# - How do I loop through a time rangec# - 如何循环遍历时间范围
【发布时间】:2012-02-21 04:09:15
【问题描述】:

我想将开始时间定义为下午 6 点,结束时间定义为晚上 9 点。此时间范围(如下所示)用于每天的日程安排。如何在 for 循环中实现?感谢您的任何回复。

6:00 PM 
6:30 PM 
7:00 PM 
7:30 PM 
8:00 PM 
8:30 PM 
9:00 PM

【问题讨论】:

  • 请展示一些源代码...您尝试了什么?什么不工作?
  • 你的时间范围是如何定义的?
  • 那么日期部分呢,这无关紧要吗?
  • @Lucero 日期无关紧要,因为每天都使用相同的时间范围。
  • @Oded 那是我不知道的。我知道如何遍历 DATE 范围,但就我而言,我只想要时间。

标签: c# asp.net datetime for-loop


【解决方案1】:

你可以使用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,因为时间是PM;)
    • @Lucero 好吧,其实TimeSpan 代表的是一个时间间隔,而不是一个日期(即时间量所代表的与一个特定日期/小时)。我不确定添加“中午之后”的概念是否与 TimeSpan 相关。
    • @key2k,我知道TimeSpan 是什么。关键是从午夜开始的时间跨度需要在 PM 中加上 12 来计算,否则将其添加到(纯)日期时会得到 AM 时间。
    【解决方案3】:

    您可以尝试使用 DateTime.Now.Hour 来获取小时并使用 if 子句。见下面的例子

    if (DateTime.Now.Hour >= 9 && DateTime.Now.Hour <= 18) { Console.WriteLine("Bonjour " + Environment.UserName); }
                        else
                        {
                            Console.WriteLine("Bonsoir " + Environment.UserName);
                        }
    

    【讨论】:

      【解决方案4】:

      如果您通过当前日期的时间范围从上午 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);
      }
      

      【讨论】:

      • 用你的代码给出一些解释将极大地帮助你的答案有用。
      【解决方案5】:

      当您使用 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))
      {
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-23
        • 2021-04-08
        • 2016-12-21
        • 1970-01-01
        • 1970-01-01
        • 2015-10-17
        • 2011-02-19
        • 2018-08-23
        相关资源
        最近更新 更多