我试图根据存储在数据库中的时间范围显示商店的开放或关闭状态。
每家商店可以有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结构。
任何帮助都会很棒。
答案 0 :(得分:0)
是的,您可以使用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));