当前位置:  开发笔记 > 编程语言 > 正文

如何检查当前时间是否介于时间范围内?

如何解决《如何检查当前时间是否介于时间范围内?》经验,为你挑选了1个好方法。

我有一项服务,用户可以配置为在"非高峰"时段运行.他们可以设置服务可以运行的时间范围.

例如:

用户A上午8点至下午5点工作,因此他们希望安排应用程序在下午5:30至7:30之间运行.

用户B工作时间为晚上9点至早上6点,因此他们安排应用程序在早上6:30到晚上8:30之间运行.

关键是应用程序使用他们的计算机而不是.

给定当前时间的DateTime,开始的DateTime和停止时间的DateTime,如何检查当前时间是否在开始和停止之间.

对我来说棘手的部分是时间可以越过午夜边界.



1> Daniel LeChe..:

如果startTimeendTime表示单个时间间隔(它只会发生一次,并startTimeendTime代表的日期和开始/停止的时间),那么它的话容易

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;
    }

}

(注意:此代码假设if start == end,则它涵盖所有时间.您在另一篇文章上对此效果发表评论)

例如,检查是否在凌晨5点到9点30分之间

IsTimeOfDayBetween(someTime, new TimeSpan(5, 0, 0), new TimeSpan(21, 30, 0))

如果startTimeendTimeDateTimeS,你可以说

IsTimeOfDayBetween(someTime, startTime.TimeOfDay, endTime.TimeOfDay)

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有