有没有一种方法可以制作时间范围列表?
例如:
包含以下内容的列表:
12:00到1:00 pm
1:00到2:00 pm
等等...
其中分割部分是配置。
我认为你必须使用datetime并将其分成一定数量(在这种情况下为一小时)。
请问有人能指点我正确的方向或提供一个例子吗?
提前感谢!
请问有人能指点我正确的方向或提供一个例子吗?
提前感谢!
没有内置类型定义时间范围,但是通过组合DateTime
和TimeSpan
可以很容易地创建一个。例如:
struct TimeRange
{
private readonly DateTime start;
private readonly TimeSpan duration;
public TimeRange ( DateTime start, TimeSpan duration )
{
this.start = start;
this.duration = duration;
}
}
DateTime
作为起点,根据每个元素所需的TimeSpan
,构建一个List<TimeRange>
。以下是TimeRange
的一个非常基本的实现,包括一个名为Split
的方法,该方法基于当前TimeRange
和子范围所需的持续时间返回一个IEnumerable<TimeRange>
。struct TimeRange
{
private readonly DateTime start;
private readonly TimeSpan duration;
public TimeRange ( DateTime start, TimeSpan duration )
{
this.start = start;
this.duration = duration;
}
public DateTime From { get { return start; } }
public DateTime To { get { return start + duration; } }
public TimeSpan Duration { get { return duration; } }
public IEnumerable<TimeRange> Split (TimeSpan subDuration)
{
for (DateTime subRangeStart = From; subRangeStart < this.To; subRangeStart += subDuration)
{
yield return new TimeRange(subRangeStart, subDuration);
}
}
public override string ToString()
{
return String.Format ("{0} -> {1}", From, To);
}
}
TimeRange mainRange = new TimeRange(DateTime.Now, new TimeSpan(12, 0, 0));
List<TimeRange> rangeList = mainRange.Split(new TimeSpan(1, 0, 0)).ToList();
new TimeSpan(1, 30, 0)
的时间段来获得一个1.5小时的范围(例如10:00到11:30)。 - Andrew Cooper