我想知道如何循环一个日期时间或任何类型的变量从每隔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)
您可以使用扩展方法:
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)