如何检查当前时间是否介于时间范围内?
我有一项服务,用户可以配置为在“非高峰”时段运行。 他们可以设置服务可以运行的时间范围。
例如:
用户A上午8点至下午5点工作,因此他们希望安排应用程序在下午5:30至7:30之间运行。
用户B工作时间为晚上9点至早上6点,因此他们安排应用程序在早上6:30到晚上8:30之间运行。
关键是应用程序使用他们的计算机而不是。
给定当前时间的DateTime,开始的DateTime和停止时间的DateTime,如何检查当前时间是否在开始和停止之间。
对我来说棘手的部分是时间可以越过午夜边界。
如果startTime
和endTime
表示单个时间间隔(它只发生一次, startTime
和endTime
表示开始/停止的日期和时间),那么就像说
bool isTimeBetween = someTime >= startTime && someTime <= endTime;
如果它是一个重复发生的事件(每天发生,在某个时间间隔内发生),您可以使用TimeOfDay
属性进行比较。 (反复出现的案例是您必须考虑跨越午夜的开始/停止的情况)
static public bool IsTimeOfDayBetween(DateTime time, TimeSpan startTime, TimeSpan endTime) { if (endTime == startTime) { return true; } else if (endTime < startTime) { return time.TimeOfDay <= endTime || time.TimeOfDay >= startTime; } else { return time.TimeOfDay >= startTime && time.TimeOfDay <= endTime; } }
(注意:此代码假设如果start == end
,则它会覆盖所有时间。您在另一篇文章中对此效果发表了评论)
例如,检查是否在凌晨5点到9点30分之间
IsTimeOfDayBetween(someTime, new TimeSpan(5, 0, 0), new TimeSpan(21, 30, 0))
如果startTime
和endTime
是DateTime
,你可以说
IsTimeOfDayBetween(someTime, startTime.TimeOfDay, endTime.TimeOfDay)
因此,我假设您想知道是否给出一天的开始时间和结束时间(不包括实际日期,即1/1/1900或类似的东西),看看是否有另一个时间与时间由开始和结束指定。 例如,如果开始时间是晚上9点,结束时间是早上9点,则接受晚上10点但拒绝上午10点。
您可以按时间范围类型(时间相等,结束是在开始之后,结束在开始之前)这样做,这很简单:
if (end==start) return true else if (end>start) return start<=time && time<=end else return !(time>end && time
或者你可以扩展开始和结束的范围,这样结束总是在开始之后如此:
if (end<=start) end += <24 hours> if (time return time<=end
我假设你在应用程序配置文件中保存了开始和结束时间,所以你基本上要做的就是让你的应用程序在“开始时间”发生时将标志设置为“on”并将其设置为“off”当停止时间发生时。
这样你就不必经常检查“现在”是否“在开始和结束之间”时间。
if(current> = start && current <= stop)
(或没有=)
我想这就是你需要的一切吗?
午夜边界是一个红色的鲱鱼 – 你需要知道的是两个比较的状态。
如果您以不同的方式处理周末,那么您还有其他逻辑,但基本比较很简单。
上述就是C#学习教程:如何检查当前时间是否介于时间范围内?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
DateTime t1; t1 = DateTime.Now; // loop inbetween start and end time if (t1>=start_time &&t1<=end_time) { //your code / action } //if you are using sql to get values start_time = Convert.ToDateTime(row.Cells[10].Text); end_time = Convert.ToDateTime(row.Cells[11].Text); //convert them to string or you will get some error!!!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/949057.html