检查时间表达式是否在跨越午夜的时间范围内

问题描述 投票:0回答:5

我有以下代码,我试图比较两个 get 以便进入 if 语句,但我的代码有问题。

如果时间高于 23:29 且小于 08:10,则应运行以下代码...

$gettime = "04:39"; // getting this from database

$startdate = strtotime("23:29");
$startdate1 = date("H:i", $startdate);

$enddate = strtotime("08:10");
$enddate1 = date("H:i", $enddate);

if ($gettime >= strtotime($startdate1) && $gettime <= strtotime($enddate1)) {
    echo "ok working";
}
php time date-range
5个回答
1
投票

确保您的数据类型正确,时间戳与时间戳而不是字符串等...

$gettime= strtotime("22:00"); // getting this from database

$startdate = strtotime("21:00");
//$startdate1 = date("H:i", $startdate);

$enddate = strtotime("23:00");
//$enddate1 = date("H:i", $enddate);


//this condition i need to run    

if($gettime >= $startdate && $gettime <= $enddate)
{
echo"ok working";
}

1
投票

您正在将字符串与日期进行比较。 $gettime 是一个字符串,您正在将它与时间对象进行比较。

您需要通过调用 $gettime = strtotime($gettime) 将 $gettime 转换为时间对象,然后您可以使用 > 或 < like you have above.

进行比较

1
投票

假设您以

date
格式从数据库接收时间(而不是
string
):

改变:

if($gettime >= strtotime($startdate1) && $gettime <= strtotime($enddate1))

至:

if($gettime >= strtotime($startdate1) || $gettime <= strtotime($enddate1))

0
投票

为了比较时间,您应该使用提供的 PHP 类 DateTime::diff 将返回一个带有时差信息的对象: http://www.php.net/manual/en/datetime.diff.php


0
投票

您可以在他们的网站上参考有关

DateTime::diff
函数的 PHP 文档 http://php.net/manual/en/datetime.diff.php

您也可以浏览一下这个 stackoverflow 问题 如何使用 PHP 计算两个日期之间的差异?

© www.soinside.com 2019 - 2024. All rights reserved.