C# 查找当前时间是否在多个时间范围之间
我试图根据存储在数据库中的时间范围显示存储的打开或关闭状态 每家商店可以有2小时的营业时间 例如: 上午09:00至上午11:00及下午01:00至晚上10:00 适用于单一时间范围: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
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
aTimespan
而不是DateTime
(关闭时间也是如此)。什么是时间转换。UTCTimeToLocalTime
和什么对象类型是计时
?@Philippe,我只使用前面提到的刻度,我已将刻度存储在数据库中作为“BigInt”和时间转换。UTCTimeToLocalTime
用于将UTC刻度转换为本地时间跨度,计时是每个存储的计时列表,我已经更新了帖子。希望有帮助。@Stom表示打开时间您可以在商店打开时有一个开始时间(DateTime
),并使用Timespan
说明它打开了多长时间,或者有一个开始和结束时间(DateTime
)。由于Timespan
表示一个持续时间,并且不知道它何时开始,我认为openSpan
应该是一个DateTime
包含小时和分钟,而不应该是Timespan
。感谢您的响应,我在数据库中以“BigInt”的形式存储了刻度,当我使用您的第一个方法时,我收到了这个错误:运算符“>=”不能应用于“System.TimeSpan”和“long”类型的操作数。
我已经更新了post。然后你现在应该转换为DateTime(我认为它有一个构造函数或静态方法,可以使用记号),并且只比较时间部分。除非开放时间可以超过午夜,否则这将有点复杂。