gpt4 book ai didi

c# - 如何检查 DateTime.Now 是否仅在时间部分的两个给定 DateTime 之间?

转载 作者:IT王子 更新时间:2023-10-29 04:25:28 24 4
gpt4 key购买 nike

对于我的应用程序,我需要知道 Now() 是否介于两个值之间。

用户可以设置开始和结束时间,这样他就不会被通知打扰(例如在晚上)。

因此,如果有两个用户可以设置的 TimePicker(开始时间和结束时间)。

假设用户将 StartTime 设置为 22:00,将 EndTime 设置为 07:00(这将涵盖整个晚上)。

如何检查 DateTime.Now 是否在选定的开始时间和结束时间之间?

编辑:我只希望它与小时和分钟部分一起使用。因此,如果用户设置开始和结束时间,这应该适用于每晚。

最佳答案

首先您需要将所有内容转换为相同的单位(我们将使用 TimeSpan),然后您需要查看开始结束时间是否跨越午夜,最后根据检查结果:

// convert everything to TimeSpan
TimeSpan start = new TimeSpan(22, 0, 0);
TimeSpan end = new TimeSpan(07, 0, 0);
TimeSpan now = DateTime.Now.TimeOfDay;
// see if start comes before end
if (start < end)
return start <= now && now <= end;
// start is after end, so do the inverse comparison
return !(end < now && now < start);

这里有一个函数可以帮你完成:

bool TimeBetween(DateTime datetime, TimeSpan start, TimeSpan end)
{
// convert datetime to a TimeSpan
TimeSpan now = datetime.TimeOfDay;
// see if start comes before end
if (start < end)
return start <= now && now <= end;
// start is after end, so do the inverse comparison
return !(end < now && now < start);
}

你可以这样调用它:

bool silenceAlarm = TimeBetween(DateTime.Now, StartTime.Value, EndTime.Value);

关于c# - 如何检查 DateTime.Now 是否仅在时间部分的两个给定 DateTime 之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12998739/

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