我正在尝试创建一个市中心,它将按照选定的间隔从00:00到24:59显示时间(这可能会从5分钟变为10分钟等等
所以例如
列表00:10
00:20
00:30
或可能是
00:15
00:30
我正在使用以下工作,但仅适用于选定的迭代次数(33):
List<string> query = Enumerable
.Range(0, 33)
.Select(i => DateTime.Today
.AddHours(0)
.AddMinutes(i * (double)IntervalParameter)
.ToString())
.ToList();
*上述示例的IntervalParameter = 10.
我正在寻求适应这一点,因此它运行了整整24小时的时间范围。只是寻找最有效的方法来做到这一点。
答案 0 :(得分:7)
为什么不计算项数?
int IntervalParameter = 5;
// .Range(0, 1440 / IntervalParameter) - see Zohar Peled's comment -
// is brief, but less readable
List<string> query = Enumerable
.Range(0, (int) (new TimeSpan(24, 0, 0).TotalMinutes / IntervalParameter))
.Select(i => DateTime.Today
.AddMinutes(i * (double)IntervalParameter) // AddHours is redundant
.ToString("HH:mm")) // Let's provide HH:mm format
.ToList();
答案 1 :(得分:2)
这样的东西?
public static IEnumerable<TimeSpan> Intervals(TimeSpan inclusiveStart, TimeSpan exclusiveEnd, TimeSpan increment)
{
for (var time = inclusiveStart; time < exclusiveEnd; time += increment)
yield return time;
}
使用示例:
foreach (var time in Intervals(TimeSpan.Zero, TimeSpan.FromDays(1), TimeSpan.FromMinutes(15)))
{
Console.WriteLine(time);
}