检查两个日期之间的差异

时间:2014-04-26 17:11:09

标签: php string date datetime

我正在尝试制作一个if语句来比较两个时间/日期,看看第二个日期是否在输入第一个日期后不到24小时。如果是,它不应该允许声明继续

$ date在代码的前面设置,是用户输入的日期。

$now = new DateTime();
$future_date = new DateTime($date);

$interval = $future_date->diff($now);

//echo $interval->format("%d days, %h hours, %i minutes, %s seconds");

if ($interval > 60 * 60 * 24) {

这里是我试图用来比较给出的日期是否相同的代码,但老实说我真的不知道如何开始这个。

if ($interval > 60 * 60 * 24) {

编辑: 我真的不知道它是否真正起作用,因为无论它只是出现了一个空白页面。

  $BookID = $_GET['BookID'];
  $id = $_GET['id'];

 $query = mysqli_query($con,"SELECT time, date FROM tbl_booking WHERE BookID={$BookID} && tbl_mem_id={$id}");
$info = mysqli_fetch_assoc( $query);

$test = $info['date'] . $info['time'];

$date = date("Y-m-d H:i:s", strtotime($test));

$plus24hours = new DateTime("+1 day");
$future_date = new DateTime($date);



 if (isset($_SESSION['id']) && $_SESSION['id'] == $_GET['id']) {

 if (isset($_GET['BookID']) && is_numeric($_GET['BookID']))
 {

if ($future_date > $plus24hours) {

header("refresh:5;url=dashboard.php");
echo "Your booking has been cancelled.";   

$sql = "DELETE FROM `tbl_booking` WHERE `BookID`={$BookID}";
$result = mysqli_query($con, $sql);

 }}
 } else {
 // if id isn't set, or isn't valid, redirect back to view page
header("refresh:5;url=dashboard.php");
echo ("Sorry, there is less than 24 hours left and you cannot cancel.");


 }

2 个答案:

答案 0 :(得分:1)

这比你想象的要容易。只需在第一个日期添加24小时,然后将其与未来日期进行比较。如果未来日期小于第一个日期,则将来不到24小时。

$plus24hours = new DateTime("+1 day");
$future_date = new DateTime($date);

if ($future_date < $plus24hours) {
    // Less than 24 hours in the future
}

答案 1 :(得分:0)

通过将两个DateTime对象转换为时间戳,您可以在几秒钟内获得差异。 $diffInSeconds = $future_date->getTimestamp() - $now->getTimestamp();

如果strtotime对象仅用于此操作,则使用DateTime可能会更好。