PHP定时器超过午夜问题

PHP定时器超过午夜问题,php,datetime,Php,Datetime,我正在使用一个小脚本来打开或关闭一些灯光,但我似乎无法解决以下问题: PHP脚本作为守护进程运行,以HH:mm:ss的形式从数据库获取时间设置 当我创建一个新的dateTime实例时,如: $TON = DateTime::createFromFormat('H:i:s', $time_on); // i.e 16:00:00 $TOFF = DateTime::createFromFormat('H:i:s', $time_off); // i.e 02:00:00 它创建一个dat

我正在使用一个小脚本来打开或关闭一些灯光,但我似乎无法解决以下问题:

PHP脚本作为守护进程运行,以HH:mm:ss的形式从数据库获取时间设置

当我创建一个新的dateTime实例时,如:

$TON = DateTime::createFromFormat('H:i:s', $time_on);    // i.e 16:00:00
$TOFF = DateTime::createFromFormat('H:i:s', $time_off);  // i.e 02:00:00
它创建一个datetime对象,如下所示:

时间:2019年10月7日16:00

休息时间:2019年10月7日02:00

很明显,现在的休息时间是错误的,所以我检查time\u Off是否
时间:2019年10月7日16:00

休息时间:2019年10月8日02:00

这现在是正确的,但很明显,由于脚本作为守护进程运行,当超过午夜时,datetime对象将更改为以下内容:

时间:2019年10月8日16:00

休息时间:2019年10月9日02:00

导致逻辑中断

有没有办法创建一个在午夜工作的简单时间检查


非常感谢

您必须定义灯光打开或关闭时的间隔,而不是仅使用小时

因此,定义灯光的间隔

如果TIME_ON 如果TIME\u OFF
最后,要打开或关闭指示灯,请根据指示灯的状态,将当前时间与指示灯打开间隔进行比较。您必须定义指示灯打开或关闭时的间隔,而不是仅使用小时

因此,定义灯光的间隔

如果TIME_ON 如果TIME\u OFF
最后,要打开或关闭指示灯,请根据指示灯的状态将当前时间与指示灯的打开间隔进行比较

您需要将完整日期时间与日期进行比较,而不仅仅是时间。
$TON=DateTime::createFromFormat('Y-m-d H:i:s',$time\u on)这应该是完整的日期。我唯一的变量是时间。这是设定的。日期并不重要,因为它是一个反复出现的过程,它只需要处理转换到午夜的问题。。i、 人们希望灯在1600点亮,0200点灭为什么不使用精确的时间戳而不是日期时间?你需要将完整的日期时间与日期进行比较,而不仅仅是时间。
$TON=DateTime::createFromFormat('Y-m-d H:i:s',$time\u on)这应该是完整的日期。我唯一的变量是时间。这是设定的。日期并不重要,因为它是一个反复出现的过程,它只需要处理转换到午夜的问题。。i、 人们希望灯在1600点亮,在0200点关为什么不使用精确的时间戳而不是日期时间?