php碳检查现在是两次之间(晚上10点到晚上8点)

问题描述 投票:2回答:6
$start = '22:00:00';
$end = '08:00:00';
$now = Carbon::now('UTC');

如何检查$ now的时间是否在时间范围内?

php php-carbon
6个回答
4
投票
$start = '22:00:00';
$end   = '08:00:00';
$now   = Carbon::now('UTC');
$time  = $now->format('H:i:s');

if ($time >= $start && $time <= $end) {
    ...
}

应该这样做,但不考虑日期


4
投票

试试这个:

  $time = Carbon::now();
  $morning = Carbon::create($time->year, $time->month, $time->day, 8, 0, 0); //set time to 08:00
  $evening = Carbon::create($time->year, $time->month, $time->day, 18, 0, 0); //set time to 18:00
  if($time->between($morning, $evening, true)) {
    //current time is between morning and evening
  } else {
    //current time is earlier than morning or later than evening
  }

true中的$time->between($morning, $evening, true)检查$time是否介于和包括$morning$evening之间。如果你写false而不是检查它是否在两次之间但不包括。

实际上,你可以离开true,因为它是默认设置的,不需要。

查看here,了解有关如何与Carbon比较日期和时间的更多信息。


1
投票
$restrictStartTime = Carbon::createFromTime(22, 0, 0);  //carbon inbuild function which will create todays date with the given time
$restrictEndTime = Carbon::createFromTime(8, 0, 0)->addDays(1); //this will create tomorrows date with the given time
$now = Carbon::now();

if($now->gt($restrictStartTime) && $now->lt($restrictEndTime)) {
 .....
 }

0
投票

请尝试下面的代码,

$start = '22:00:00';
$end = '08:00:00';
$now = Carbon::now('UTC');

$nowTime = $now->hour.':'.$now->minute.':'.$now->second;

if(strtotime($nowTime) > strtotime($start) && strtotime($nowTime) < strtotime($end) ) {
    echo 'YES';
} else {
    echo 'NO';
}

0
投票
<?php
$now = date("H");

if ($now < "20") {
    echo "Have a good day!";
}

0
投票

克里斯试图指出的是,如果结束时间超过午夜,那么你必须考虑到这一点。

这不是最干净的方法,但这是一种似乎有用的方法。

private function isNowBetweenTimes($timezone, $startDateTime, $endDateTime) {
    $curTimeLocal = Carbon::now($timezone);
    $startTime = $curTimeLocal->copy();
    $startTime->hour = $startDateTime->hour;
    $startTime->minute = $startDateTime->minute;
    $endTime = $curTimeLocal->copy();
    $endTime->hour = $endDateTime->hour;
    $endTime->minute = $endDateTime->minute;
    if ($endTime->lessThan($startTime))
        $endTime->addDay();

    return ($curTimeLocal->isBetween($startTime, $endTime));
}

此示例仅关注小时和分钟而不是秒,但您也可以轻松复制它。关键是比较开始和结束时间,然后将它们与当前时间进行比较,如果结束时间小于开始时间,则添加一天到结束时间。


-1
投票

试试这个 :

$start = 22; //Eg. start hour
$end = 08;  //Eg. end hour
$now = Carbon::now('UTC');

if( $start < $now->hour && $now->hour < $end){
    // Do something
}
© www.soinside.com 2019 - 2024. All rights reserved.