仅给出时间时获得间隔边界的更好方法
Better way to get Interval bounds when only time is given
我必须找出区间的限制,即当给出 datetime
时,基于区间类型的区间的 upper-bound and lower-bound
。
示例:假设给定时间= 12:05(那么,这位于区间范围12内: 00 - 1:00 如果间隔类型是每小时;12:00 - 12:30 如果间隔类型是半小时;
12:00 - 12:15 如果间隔类型是季度。同样,间隔类型可以是任何东西。
目前,我在应用程序加载时在字典对象中加载所有不同的间隔范围集,然后在给定时间内从该字典中获取间隔范围。
抱歉,我知道这个问题陈述看起来很简单,但目前想不出其他方法。如果有人可以在这里帮助我,那将会很有帮助。提前致谢。
您可以通过将总分钟数除以您的间隔,然后从总分钟数中减去余数来计算范围。之后就可以很轻松的拿到区间的末端了。
首先,您需要使用 DateTime.TimeOfDay
. Then use TimeSpan.TotalMinutes
.
从 DateTime
对象中获取时间部分作为 TimeSpan
这是一个好的开始:
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
的简单 class 来表示间隔范围的开始和结束。但是,您可以随意以不同的方式处理它。
用法:
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);
我必须找出区间的限制,即当给出 datetime
时,基于区间类型的区间的 upper-bound and lower-bound
。
示例:假设给定时间= 12:05(那么,这位于区间范围12内: 00 - 1:00 如果间隔类型是每小时;12:00 - 12:30 如果间隔类型是半小时; 12:00 - 12:15 如果间隔类型是季度。同样,间隔类型可以是任何东西。
目前,我在应用程序加载时在字典对象中加载所有不同的间隔范围集,然后在给定时间内从该字典中获取间隔范围。
抱歉,我知道这个问题陈述看起来很简单,但目前想不出其他方法。如果有人可以在这里帮助我,那将会很有帮助。提前致谢。
您可以通过将总分钟数除以您的间隔,然后从总分钟数中减去余数来计算范围。之后就可以很轻松的拿到区间的末端了。
首先,您需要使用 DateTime.TimeOfDay
. Then use TimeSpan.TotalMinutes
.
DateTime
对象中获取时间部分作为 TimeSpan
这是一个好的开始:
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
的简单 class 来表示间隔范围的开始和结束。但是,您可以随意以不同的方式处理它。
用法:
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);