PHP确定当范围超过一天时,检查时间是否在范围内

时间:2016-11-16 22:47:01

标签: php datetime

有很多SO问题向您展示如何检查日期时间是否在一个范围内,但是当您想要经常性地进行并且日期范围超过一天时,没有多少帮助。

举个例子,你如何检查周二的22:00到下一个Thrusday的07:30?那一周你怎么做那个星期?

1 个答案:

答案 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
}