检查两次之间的时间

时间:2016-07-14 14:56:07

标签: php time

我只想检查当前时间是否在2次之间

到目前为止,我浏览了多个脚本,但所有脚本都包含了日期或者只是困难,或者脚本只计算完整的小时数,如6或7,而我需要检查小时和分钟

我很感激帮助,我想要的脚本设置

$begintime = 8:30;
$endtime = 17:00;

if(currenttime is between $begintime and $endtime) {
    // do something
} else {
    // do something else
}

3 个答案:

答案 0 :(得分:7)

在定义中使用DateTime对象。它将在内部使用当前日期,然后可以将其忽略。

$now = new DateTime();
$begin = new DateTime('8:00');
$end = new DateTime('17:00');

if ($now >= $begin && $now <= $end)

高级:即使在执行期间日期更改(DateTime对象可能有一天有1天的日期),这也是防弹的,请从{重新设置日期{1}} $now$start $end对象:

DateTime

或者,查看Brick\DateTime扩展程序,其中可以找到忽略日期的$y = (int) $now->format('Y'); $m = (int) $now->format('n'); // n is the month without leading zeros $d = (int) $now->format('d'); $begin->setDate($y, $m, $d); $end->setDate($y, $m, $d); 类。

答案 1 :(得分:2)

查看PHP的DateTime功能。

$now = new Datetime("now");
$begintime = new DateTime('08:30');
$endtime = new DateTime('17:00');

if($now >= $begintime && $now <= $endtime){
    // between times
    echo "yay";
} else {
    // not between times
    echo "nay";
}

另外,请确保在php.ini中正确设置了您的时区。或者您可以使用date_default_timezone_set();

在运行时设置它

答案 2 :(得分:0)

退房。我测试了这段代码。它工作正常。

date_default_timezone_set("Asia/Kolkata");
$current_time = date("h:i a");
$begin = "9:00 am";
$end   = "5:00 pm";

$date1 = DateTime::createFromFormat('H:i a', $current_time);
$date2 = DateTime::createFromFormat('H:i a', $begin);
$date3 = DateTime::createFromFormat('H:i a', $end);

if ($date1 > $date2 && $date1 < $date3) {
   echo 'Here';
} else {
   echo 'Not';
}