首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C#中使用date

在C#中使用date
EN

Stack Overflow用户
提问于 2012-02-16 18:48:24
回答 5查看 236关注 0票数 1

我有很多公司,每一家公司都有开业日期和截止日期,例如:

代码语言:javascript
运行
复制
Company  Open   Close

代码语言:javascript
运行
复制
A        08.00  22.00     (close in the **same** day)
B        10.00  02.00     (close in the **second** day)
C        14.00  03.00     (close in the **second** day)

在网页上,用户必须查看公司列表,并根据当前时间(服务器时间)显示每个公司的状态(、openclose)。

问题:当公司在同一天打开或关闭时(A),很容易在以下算法中获得状态:isOpen = (NOW > OpenTime AND NOW < ClosingTime),但如果公司在第1天打开,在第2天关闭,如果用户在1点检查页面,则公司B将出现关闭(因为(1.00 > 10.00 AND 1.00 < 02.00)是False ),但会实时打开。

如何解决这个问题(当关闭时间日与开幕时间日不同时)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-02-16 18:51:08

我能想到的最简单的解决方案是检查所列出的关闭时间是否小于开放时间并添加24小时,并根据该值进行检查。

代码语言:javascript
运行
复制
isOpen = (NOW > OpenTime AND NOW < (ClosingTime < OpeningTime ? ClosingTime + 24.00 : ClosingTime)
票数 4
EN

Stack Overflow用户

发布于 2012-02-16 18:50:42

如果打开时间晚于关闭时间,则反转测试。

票数 2
EN

Stack Overflow用户

发布于 2012-02-16 19:06:52

如果我对此有正确的理解,那么有以下算法:

当开放时间小于关闭时间时:isOpen = now > openTime && now < closeTime

否则,isOpen = now > openTime || now < closeTime

代码语言:javascript
运行
复制
TimeSpan nowTime = TimeSpan.FromHours(11);
TimeSpan openTime = TimeSpan.FromHours(8);
TimeSpan closeTime = TimeSpan.FromHours(2);

bool isOpened = openTime < closeTime
                    ? (nowTime > openTime && nowTime < closeTime)
                    : (nowTime > openTime || nowTime < closeTime);

注意:TimeSpan结构用于时间间隔表示,但也可以使用double (通过简单替换)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9317208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档