使用TimeSpan和DateTime计算

时间:2013-03-04 22:17:40

标签: c# datetime timespan

根据当前时间,我需要计算商店是否实际开放。到目前为止,开放时间一直保持为TimeSpan

public TimeSpan OpeningTime { get; set; }
public TimeSpan ClosingTime { get; set; }

如何判断商店现在是否已经开放?我试过一些想法,但解决方案看起来很麻烦。一个原因是需要在TimeSpanDateTime之间进行转换。 TimeSpan是适合开放时间的格式吗?当时一个单独的课程会更有意义吗?

注意:工作日分别处理

5 个答案:

答案 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)
{ 
    //...
}