我正在尝试制作一个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.");
}
答案 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
可能会更好。