-1
有很多SO问题向您展示如何检查日期时间是否在一个范围内,但没有太多的帮助当您想要重复进行并且日期范围跨越一天以上时。PHP当范围跨越一天以上时,重新检查时间是否在范围内
作为一个例子,你如何检查它是否在星期二22:00到星期三07:30?那周你怎么做那一周?
有很多SO问题向您展示如何检查日期时间是否在一个范围内,但没有太多的帮助当您想要重复进行并且日期范围跨越一天以上时。PHP当范围跨越一天以上时,重新检查时间是否在范围内
作为一个例子,你如何检查它是否在星期二22:00到星期三07:30?那周你怎么做那一周?
PHP的DataTime类的构造函数接受相对参数this xxxday
,它可以用来给你相对于当前时间的下一个'xxxday'。
因此,例如,new DateTime('next friday')
将为您提供一个日期时间对象,表示下一个星期五相对于当天的00:00:00。如果当天的星期五为,那么这是将返回的日期。
所以,如果你定义
$end = new DateTime(next thursday 07:30);
然后$end
是当今表示对下周二22:00从当前时间,或20:00如果今天是星期二DateTime对象。然后可以采取间隔关闭端从当前时间之前获得与
$start = clone $end;
$start = $end->sub(new DateInterval('P1DT9H30M'));
它给你DateTime对象1天,9小时30分钟开始到07:30在下星期四,或在当前时间下周四前的星期二22:00。
然后你就可以获取当前日期时间,看看是否开始和结束日期时间之间的:
$now = new DateTime();
if($now >= $start && $now <= $end) {
//In interval
}
请[编辑]你的问题,以显示[你有什么到目前为止已经试过(HTTP:/ /whathaveyoutried.com)。您应该包含您遇到问题的代码[mcve],然后我们可以尝试帮助解决特定问题。你还应该阅读[问]。 –
@TobySpeight如果我把我所尝试过的方法问一个答案,我自己的问题是有道理的[正如所鼓励的那样](https://stackoverflow.blog/2011/07/its-ok-to-ask-and-回答你自己的问题/)无论如何,“你将如何检查它是否在星期二的22:00到接下来的星期四的07:30之间?”似乎是最小的,完整的和可验证的。我注意到你的“你到目前为止所尝试的”链接不在现场,你能指出任何SO指导吗? – Dom