C# 查找当前时间是否在多个时间范围之间

C# 查找当前时间是否在多个时间范围之间,c#,datetime,range,timespan,C#,Datetime,Range,Timespan,我试图根据存储在数据库中的时间范围显示存储的打开或关闭状态 每家商店可以有2小时的营业时间 例如: 上午09:00至上午11:00及下午01:00至晚上10:00 适用于单一时间范围: IEnumerable<Timings> timings = allStore.ToList(); // from database foreach (var storetime in timings) { TimeSpan openSpan = TimeSpan.FromTicks((long)s

我试图根据存储在数据库中的时间范围显示存储的打开或关闭状态

每家商店可以有2小时的营业时间

例如:

上午09:00至上午11:00及下午01:00至晚上10:00

适用于单一时间范围:

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 ?
 {

 }
IEnumerable timings=allStore.ToList();//从数据库
foreach(var存储时间计时)
{
TimeSpan openSpan=TimeSpan.FromTicks((长)storetime.OpenTime);
TimeSpan openLocalTime=TimeConversions.UTCTimeToLocalTime(openSpan);
DateTime openDatetime=DateTime.Today.Add(openLocalTime);
字符串openDisplayTime=openDatetime.ToString(“hh:mm tt”);
.....
TimeSpan closeLocalTime=TimeConversions.UTCTimeToLocalTime(closeSpan);
如果((现在>openLocalTime)&&(现在
多个范围:

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 ?
 {

 }
IEnumerable timings=allStore.ToList();//从数据库
if((timings.Any(now>d=>d.OpenTime))//我可以使用任何吗?
{
}
这里是结构


任何帮助都很好。

是的,您可以使用
任何
,因为您只需要当前时间在开放范围内一次

IEnumerable timings=allStore.ToList();//从数据库

如果(timeings.Any)(d=>(now>=d.OpenTime)&(现在解决方案必须是C#?在我看来,最好是直接用SQL编写,而不是检索所有的开始时间。我不理解你的代码。为什么
openLocalTime
a
Timespan
而不是
DateTime
(关闭时间也是如此)。什么是
时间转换。UTCTimeToLocalTime
和什么对象类型是
计时
?@Philippe,我只使用前面提到的刻度,我已将刻度存储在数据库中作为“BigInt”和
时间转换。UTCTimeToLocalTime
用于将UTC刻度转换为本地时间跨度,计时是每个存储的计时列表,我已经更新了帖子。希望有帮助。@Stom表示打开时间您可以在商店打开时有一个开始时间(
DateTime
),并使用
Timespan
说明它打开了多长时间,或者有一个开始和结束时间(
DateTime
)。由于
Timespan
表示一个持续时间,并且不知道它何时开始,我认为
openSpan
应该是一个
DateTime
包含小时和分钟,而不应该是
Timespan
。感谢您的响应,我在数据库中以“BigInt”的形式存储了刻度,当我使用您的第一个方法时,我收到了这个错误:
运算符“>=”不能应用于“System.TimeSpan”和“long”类型的操作数。
我已经更新了post。然后你现在应该转换为DateTime(我认为它有一个构造函数或静态方法,可以使用记号),并且只比较时间部分。除非开放时间可以超过午夜,否则这将有点复杂。