C#每30分钟循环24小时

use*_*432 7 c#

我想知道如何循环一个日期时间或任何类型的变量从每隔30分钟从凌晨12:00到晚上11:59?

所以我需要一个变量来显示12HR格式的时间(01:00 PM,09:00 AM),每次我循环播放它,到时间增加30分钟?然后我需要在字符串中使用此值.

时间需要从上午10点开始

Mat*_*ted 15

LINQ始终存在

var start = DateTime.Today;
var clockQuery = from offset in Enumerable.Range(0, 48)
                 select start.AddMinutes(30 * offset);
foreach (var time in clockQuery)
    Console.WriteLine(time.ToString("hh:mm tt"));
Run Code Online (Sandbox Code Playgroud)

... LINQ + FUNC(用于参数化启动)

Func<DateTime, IEnumerable<DateTime>> clockQuery = start =>
    from offset in Enumerable.Range(0, 48)
    select start.AddMinutes(30 * offset);
foreach (var time in clockQuery(DateTime.Today))
    Console.WriteLine(time.ToString("hh:mm tt"));
Run Code Online (Sandbox Code Playgroud)

...或者如果您只是想要TimeSpan偏移...

var start = DateTime.Today;
var clockQuery = from offset in Enumerable.Range(0, 48)
                 select TimeSpan.FromMinutes(30 * offset);
foreach (var time in clockQuery)
    Console.WriteLine((start + time).ToString("hh:mm tt"));
Run Code Online (Sandbox Code Playgroud)


Bro*_*ass 6

您可以使用扩展方法:

public static class DateTimeHelper
{
    public static IEnumerable<DateTime> GetHalfHours(this DateTime dt)
    {
        TimeSpan ts = TimeSpan.FromMinutes(30);
        DateTime time = dt;
        while(true)
        {
            yield return time;
            time.Add(ts);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)