【问题标题】:Check time between two times [duplicate]检查两次之间的时间[重复]
【发布时间】:2016-07-14 14:56:06
【问题描述】:

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

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

不胜感激,我想要的脚本设置是

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

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

【问题讨论】:

  • 私有函数 is_between_times($from, $to) { $Carbon = new Carbon(); $from = $Carbon->createFromFormat('H:i:s', $from); $to = $Carbon->createFromFormat('H:i:s', $to);返回 $Carbon->now()->between($from, $to); }

标签: php time


【解决方案1】:

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

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

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

高级:即使在执行期间日期发生更改(DateTime 对象可能有 1 天的休息日),这也是防弹的,请从 $now 重新设置日期到 $start$end 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);

或者,检查 Brick\DateTime 扩展,其中可以找到忽略日期的 LocalTime 类。

【讨论】:

  • @user2461508 您能否将答案标记为已接受?
【解决方案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() 在运行时设置它;

【讨论】:

  • 谢谢,这对@sam很有帮助
【解决方案3】:

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

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';
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 2012-02-15
    • 1970-01-01
    相关资源
    最近更新 更多