我正在尝试根据存储在数据库中的时间范围显示商店的打开或关闭状态。
每家店可以有2个营业时间
示例:
09:00 AM 至 11:00 AM 和 01:00 PM 至 10:00 PM
适用于单一时间范围:
IEnumerable<Timings> timings = allStore.ToList(); // from database
foreach (var storetime in timings)
{
TimeSpan openSpan = TimeSpan.FromTicks((long)storetime.OpenTime);
TimeSpan openLocalTime = TimeConversions.UTCTimeToLocalTime(openSpan);
DateTime openDatetime = DateTime.Today.Add(openLocalTime);
string openDisplayTime = openDatetime.ToString("hh:mm tt");
.....
TimeSpan closeLocalTime = TimeConversions.UTCTimeToLocalTime(closeSpan);
if ((now > openLocalTime) && (now < closeLocalTime))
{
//Store is Open
}
else
{
//Store is Closed
}
}
多个范围:
IEnumerable<Timings> timings = allStore.ToList(); // from database
if((timings.Any(now > d=>d.OpenTime))) // can i use Any ?
{
}
这里是 table结构。
任何帮助都会很棒。
最佳答案
是的,您可以使用Any
,因为您只需要当前时间在开放范围内一次。
IEnumerable<Timings> timings = allStore.ToList(); // from database
if(timings.Any(d => (now >= d.OpenTime) && (now <= d.CloseTime)))
{
}
正如@martin 所建议的,在数据库上执行此查询可能是更好的解决方案。我不知道你的数据库是什么样的,但查询应该是这样的:
bool isOpen = db.Stores
.Single(s => s.Id = whatever)
.OpeningHours.Any(d => (now >= d.OpenTime) && (now <= d.CloseTime));
关于c# - 查找当前时间是否落在多个时间范围之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37527006/