C#在下拉列表中显示时间间隔

本文关键字:时间 显示 下拉列表 | 更新日期: 2023-09-27 18:28:58

导出了将dropdownlist绑定到一组时间间隔的逻辑后,我希望在方面对此进行改进

  • 使用设计用于日期和时间的本地数据类型

  • 使其可配置

伪代码

for (var hoursCount = 0; hoursCount <= 12; i++) {
    for (var timeSlots = 0; timeSlots < 2; j++) {
        string hourAndMinute = hoursCount;
        if (timeSlots == 0) {
            hourAndMinute += ":00 AM";
        } else {
            hourAndMinute += ":30 AM";
        }
        if (hourAndMinute != "12:00 AM" || hourAndMinute != "12:30 AM") {
            alert(hourAndMinute);
        }
    }
}

输出

0:00 AM
0:30 AM
.
.
.
12:30 AM

C#在下拉列表中显示时间间隔

目前还不清楚您想要什么样的"配置",但由于您只处理时间,我个人会使用Noda time来处理这类事情,它具有LocalTime结构。(免责声明:我是Noda Time的主要开发者,所以我有点偏见。)你可以只使用DateTime,但因为你不想约会。。。

目前还不清楚你想要什么样的"配置",但在Noda Time,你可以写:

LocalTimePattern pattern = LocalTimePattern.CreateWithInvariantInfo("hh:mm tt");
for (var hour = 0; hour <= 12; hour++) {
    for (var slot = 0; slot < 2; slot++) {
        LocalTime time = new LocalTime(hour, slot * 30, 0);
        Console.WriteLine(pattern.Format(time));            
    }
}

有了更多关于你想做什么的细节,我们无疑可以提供更多帮助。

编辑:好吧,听起来你可能想要这样的东西:

static void DisplaySlots(string format, Period slotLength, int slots)
{
    // Or change the parameter to be a LocalTimePattern
    LocalTimePattern pattern = LocalTimePattern.CreateWithInvariantInfo(format);
    LocalTime time = LocalTime.Midnight;
    for (int i = 0; i < slots; i++)
    {
        Console.WriteLine(pattern.Format(time));
        time = time + slotLength;
    }
}

然后称之为:

DisplaySlots("HH:mm", Period.FromMinutes(20), 100);

(或者其他什么…)

使用DateTime:的替代方案

static void DisplaySlots(string format, TimeSpan slotLength, int slots)
{
    DateTime time = DateTime.Today;
    for (int i = 0; i < slots; i++)
    {
        Console.WriteLine(time.ToString(format));
        time = time + slotLength;
    }
}

首先对逻辑使用DateTime结构,然后将其转换为首选格式的字符串进行显示。