gpt4 book ai didi

c# - 当时间落在时间范围之间时返回真值?

转载 作者:行者123 更新时间:2023-11-30 13:51:08 25 4
gpt4 key购买 nike

我正在制作一个函数来检查时间是否落在 24 小时格式的时间范围内,但是我的代码有些问题,任何人都可以指出如何解决吗?

我的代码:

bool isDoTime(int starthour, int startminute, int endhour, int endminute)
{
TimeSpan start = new TimeSpan(starthour, startminute, 0);
TimeSpan end = new TimeSpan(endhour, endminute, 0);
TimeSpan add24h = new TimeSpan(24, 0, 0);
TimeSpan now = DateTime.Now.TimeOfDay;


if (starthour > endhour || (endhour == starthour && endminute <= startminute))
{
end += add24h;
}
if ((now > start) && (now < end))
{
return true;
}

return false;
}

问题:我想在当前时间 20:30 - 3:30 之间返回 true,但是当我按如下方式运行我的代码时。条件是仅从 8:30 到 00:00 返回真,从 00:00 - 3:30 不返回真

if (isDoTime(20,30,3,30) //return true from 20:30  - 3:30 
{
//dosomething
}

最佳答案

如果跨越午夜,则在一张支票中拆分,同一天则拆分为一张支票。

TimeSpan start = new TimeSpan(starthour, startminute, 0); 
TimeSpan end = new TimeSpan(endhour, endminute, 0);
TimeSpan now = DateTime.Now.TimeOfDay;

//The readable version:
if(start>end){
//Must check if after start (before midnight) or before end (after midnight)
if((now > start) || (now < end)){
return true;
{
}
else
{
//Simple check - span is within same day
if ((now > start) && (now < end))
{
return true;
}
}
return false;

简短/神秘的版本:

return start > end ? (now > start) || (now < end) : (now > start) && (now < end);

关于c# - 当时间落在时间范围之间时返回真值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4956486/

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