gpt4 book ai didi

c# - 如何检查当前时间是否在时间范围内?

转载 作者:IT王子 更新时间:2023-10-29 04:33:05 27 4
gpt4 key购买 nike

我有一项服务,用户可以将其配置为在“非高峰”时段运行。他们能够设置服务可以运行的时间范围。

例如:

用户 A 的工作时间为上午 8 点到下午 5 点,因此他们希望将应用安排在下午 5:30 到早上 7:30 之间运行。

用户 B 的工作时间是晚上 9 点到早上 6 点,因此他们安排应用在早上 6:30 到晚上 8:30 之间运行。

重点是应用程序使用他们的计算机,而他们不使用。

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

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

最佳答案

如果 startTimeendTime 表示单个时间间隔(它只会发生一次,而 startTimeendTime 表示开始/停止的日期和时间),那么说起来就很简单了

bool isTimeBetween = someTime >= startTime && someTime <= endTime;

如果它是重复发生的事件(每天发生,在某个时间间隔内),您可以使用 TimeOfDay 进行比较属性(property)。 (重复出现的情况是您必须考虑在午夜开始/停止的情况)

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))

如果 startTimeendTimeDateTime,你可以说

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

关于c# - 如何检查当前时间是否在时间范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/592248/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com