PHP在两个不同的日期和时间检查日期和时间间隔

Posted

技术标签:

【中文标题】PHP在两个不同的日期和时间检查日期和时间间隔【英文标题】:PHP check date & time interval in two different date and time 【发布时间】:2022-01-04 06:27:07 【问题描述】:

我有日期从日期27-11-2021 到日期28-11-2021 的租借请求,以租用汽车为例。我需要在上述日期租车。而且这辆车已经租到了

关于在线汽车租赁服务,我正在创建以下日期的汽车租赁请求。

From - 27-11-2021To - 29-11-2021

而且这辆车可能已经在不同的日期租了。举一些日期的例子-

From - 25-11-2021To - 26-11-2021

From - 27-11-2021To - 28-11-2021

From - 26-11-2021To - 27-11-2021

所以我需要比较并找出那辆车的可用性是否在特定日期期间可用!

在另一种情况下,如果有许多相同型号的汽车,如果一辆车不可用,那么我们将如何检查另一辆车是否可用?

我需要在php 中对此有所了解

【问题讨论】:

您基本上是在搜索一个范围。为保留日期 $startDate 和 $endDate 使用两个变量,为搜索日期 $startSearch 和 $endSearch 使用两个变量。然后检查if ($startSearch <= $endDate && $startSearch >= $startDate || $endSearch <= $endDate && $endSearch >= $startDate) /* car already reaerved */ 搜索日期是否在保留范围内或结束日期在保留范围内,在这些情况下日期重叠并且无法预订。 但是汽车可能会保留许多不同的日期范围,所以我需要检查所有保留日期范围的内部循环? 【参考方案1】:
<?php

//Requested from and to date

$fromDate = strtotime('27-11-2021');
$toDate = strtotime('29-11-2021');

//Note: You have to loop from here for different car variant
//Booked details for car 1 *as per example

$carBookedDetailsArray = array(
    0 => array(
        'bookingFromDate' => '25-11-2021',
        'bookingToDate' => '26-11-2021'
    ),
    1 => array(
        'bookingFromDate' => '27-11-2021',
        'bookingToDate' => '28-11-2021'
    ),
    2 => array(
        'bookingFromDate' => '26-11-2021',
        'bookingToDate' => '27-11-2021'
    ),
);

$bookingFromDate = "";
$bookingToDate = "";
$bookedFlag=0;

for ($i=0; $i <count($carBookedDetailsArray) ; $i++)  

    $bookingFromDate = strtotime($carBookedDetailsArray[$i]['bookingFromDate']);
    $bookingToDate = strtotime($carBookedDetailsArray[$i]['bookingToDate']);

    if (($fromDate < $bookingFromDate && $toDate < $bookingFromDate) || ($fromDate > $bookingToDate && $toDate > $bookingToDate))
        echo "Booking Success for Car 1 form ".date('d-m-Y',$fromDate)." to ".date('d-m-Y',$toDate); 
        $bookedFlag=1;
        break;
    
    


if($bookedFlag==0)
    echo "Car 1 is not availble for your requested time";


//Note: You have to loop to here for different car variant

【讨论】:

以上是关于PHP在两个不同的日期和时间检查日期和时间间隔的主要内容,如果未能解决你的问题,请参考以下文章

PHP 如何获取两个时间之间的年和月份及间隔天数 PHP两个日期之间的所有日期

检查两个日期间隔是不是相交

日期与php的差异

如何查找两个不同日期字段SQL在一定时间间隔内是不是匹配?

js 两个日期间隔月数

请问两个时间点之间的间隔怎么算?