有很多SO问题向您展示如何检查日期时间是否在一个范围内,但是当您想要经常性地进行并且日期范围超过一天时,没有多少帮助。
举个例子,你如何检查周二的22:00到下一个Thrusday的07:30?那一周你怎么做那个星期?
答案 0 :(得分:1)
PHP的DataTime类的构造函数接受相对参数this xxxday
,该参数可用于为您提供下一个' xxxday'相对于当前时间。
因此,例如,new DateTime('next friday')
将为您提供一个日期时间对象,表示下一个星期五相对于当天的00:00:00。如果当天 星期五,那么这就是将要返回的日期。
所以如果你定义
$end = new DateTime(next thursday 07:30);
然后$end
是一个DateTime对象,代表当前时间下周二的22:00,如果今天是星期二则代表今天的20:00。然后你可以把结束时间间隔拿到
$start = clone $end;
$start = $end->sub(new DateInterval('P1DT9H30M'));
在当前时间的下一个星期四的07:30之前的1天,9小时和30分钟为您提供DateTime对象,或者从当前时间到下周四之前的星期二22:00时间。
然后,您可以获取当前日期时间,并查看它是否在开始日期和结束日期之间:
$now = new DateTime();
if( $now >= $start && $now <= $end ) {
//In interval
}