根据当前时间,我需要计算商店是否实际开放。到目前为止,开放时间一直保持为TimeSpan
:
public TimeSpan OpeningTime { get; set; }
public TimeSpan ClosingTime { get; set; }
如何判断商店现在是否已经开放?我试过一些想法,但解决方案看起来很麻烦。一个原因是需要在TimeSpan
和DateTime
之间进行转换。 TimeSpan
是适合开放时间的格式吗?当时一个单独的课程会更有意义吗?
注意:工作日分别处理
答案 0 :(得分:5)
如果:
,它是开放的OpeningTime <= DateTime.Now.TimeOfDay <= ClosingTime
答案 1 :(得分:2)
好吧,TimeSpan
衡量两次之间的差异,而不是实际时间。
假设您使用TimeSpan
表示相对于午夜的开始和结束时间,请尝试
TimeSpan currentTime = DateTime.Now.TimeOfDay;
bool isOpen = currentTime > OpeningTime && currentTime < ClosingTime;
答案 2 :(得分:0)
尝试类似:
var timeOfDay = DateTime.Now.TimeOfDay;
if (timeOfDay >= OpeningTime && timeOfDay < ClosingTime)
{
// open now!
}
答案 3 :(得分:0)
您可以使用DateTime.Now.TimeOfDay
并与2 TimeSpans进行比较
OpeningTime = new TimeSpan(9, 30, 0); // 9:30AM
ClosingTime = new TimeSpan(17, 30, 0); // 5:30AM
bool isOpen = DateTime.Now.TimeOfDay >= OpeningTime && DateTime.Now.TimeOfDay <= ClosingTime;
答案 4 :(得分:0)
TimeSpan OpeningTime = new TimeSpan(8, 0, 0);
TimeSpan ClosingTime = new TimeSpan(16, 0, 0);
TimeSpan now = DateTime.Now - DateTime.Now.Date;
if (now > OpeningTime && now < ClosingTime)
{
//...
}