0

我正在使用 c#.net

我从数据库中提取了两次(“最早开始时间”和“最晚结束时间”)。

我想循环并将“中间”时间添加到列表中。

例子

  • 最早开始时间 – 12:00
  • 12:30
  • 13:00
  • 13:30
  • 14:00
  • 14:30
  • 最晚结束时间 – 15:00

我找到了一些代码,但是由于信息是从数据库中提取的,因此开始时间可能是 12:00/12:30 等。我不知道如何调整下面的代码以期望这两个时间(整小时/半小时)一小时)

int i = -1; 

List<string> appointmentTimes = new List<string>();

while (DateTime.Today.AddHours(firstTime).AddMinutes(i * 30).Hour < lastTime)
{
appointmentTimes.Add(DateTime.Today.AddHours(7).AddMinutes(30*(++i)); );
}

我是否必须将 firstTime 分成几小时/分钟?

例子

while (DateTime.Today.AddHours(firstTimeHour).AddMinutes(firstTimeMintues, i * 30).Hour < lastTime)
{
appointmentTimes.Add(DateTime.Today.AddHours(7).AddMinutes(30*(++i)); );
}

提前感谢您的帮助。

克莱尔

4

2 回答 2

1

抱歉,这只是一个提示而不是答案,但使用 TimeSpan 循环可用时间可能会更容易。

使用 TimeSpan.FromHours 和 TimeSpan.FromMinutes 获取 TimeSpan,然后将其增加 30 并将其添加到列表中,类似于使用 TimeSpan.Hours 和 TimeSpan.Minutes 的方式。

于 2009-10-15T08:52:04.387 回答
0

感谢贾斯汀让我走上正轨。

            // ---- Create a new list
            List<string> appointmentTimes = new List<string>();

            // ---- If information is pulled back
            if (myResults != null)
            {
                TimeSpan time = TimeSpan.FromMinutes(30);

                DateTime FirstTime = Convert.ToDateTime(myResult.firstStart);
                DateTime LatestTime = Convert.ToDateTime(myResult.lastEnd);

                while (FirstTime < LatestTime )
                {
                    appTimes.Add(FirstTime .ToString());
                    FirstTime += time;
                }
            }
于 2009-10-15T10:23:41.750 回答