当给出upper-bound and lower-bound
时,我必须根据间隔类型找出间隔的限制,即间隔的datetime
。
示例:说给定时间= 12:05 (然后,这位于 12:00 - 1:00 的区间范围内间隔类型是每小时; 12:00 - 12:30 如果间隔类型是半小时; 12:00 - 12:15 如果间隔类型是每季度。同样间隔类型可以是任何东西。
目前我正在应用程序加载的字典对象中加载所有不同的间隔范围集,然后在给定时间内从该字典中获取间隔范围。
对不起,我知道这个问题陈述看起来很简单,但现在还想不到其他方法。如果有人能在这里帮助我会很有帮助。提前谢谢。
答案 0 :(得分:3)
您可以通过将总分钟除以您的间隔,然后从总分钟中减去余数来计算范围开始。之后,您可以轻松地结束范围。
首先,您需要使用DateTime.TimeOfDay
将DateTime
对象中的时间部分作为TimeSpan
。然后使用TimeSpan.TotalMinutes
。
这是一个好的开始:
public class TimeRange
{
public TimeRange(TimeSpan from, TimeSpan to)
{
From = from;
To = to;
}
public TimeSpan From { get; set; }
public TimeSpan To { get; set; }
}
public TimeRange GetRange(DateTime d, int minutesInterval)
{
TimeSpan time = d.TimeOfDay;
var from = time.TotalMinutes - (time.TotalMinutes % minutesInterval);
var to = from + minutesInterval;
return new TimeRange(TimeSpan.FromMinutes(from), TimeSpan.FromMinutes(to));
}
为清楚起见,我创建了一个名为TimeRange
的简单类来表示区间范围的开始和结束。但是,您可以随意以不同的方式处理此问题。
<强>用法:强>
DateTime d = DateTime.Now;
TimeRange range = GetRange(d, 60);
//TimeRange range = GetRange(d, 15);
Console.WriteLine("From: {0}\r\nTo: {1}", range.From, range.To);
<强> Try it online 强>