如何比较PHP中的两个日期?
在数据库中,日期看起来像2011-10-2.
如果我想将今天的日期与数据库中的日期进行比较,看看哪一个更大,我该怎么做?
我试过这个,
$today = date("Y-m-d");
$expire = $row->expireDate //from db
if($today < $expireDate) { //do something; }
但它并没有真正起作用.这样做的另一种方式是什么?
更新:我知道这篇文章有点旧,但我只是想提一下碳,这是一个与laravel一起使用的类,但可以与经典的PHP一起使用,它确实有日期的奇迹.看看吧:碳
我正在尝试编写一个脚本来检查当前日期/时间是否超过了 05/15/2010 at 4PM
如何使用PHP的date()函数执行此检查?
我有时间保存在数据库中,如下午7:30作为varchar字段.我想检查这个时间是否大于现在的时间.
我将DB时间字符串转换为'19:30',现在我想做这样的事情:
$my_time = '19:30';
if($my_time  > date('H:i'))
{
    do something ...
}
问题是如果$ my_time是非空字符串,则上面将返回true.
做strtotime($my_time)也没有帮助.
strtotime('H:i',$my_time) 00:00.
这样做(int)date('H:i')会给1700年的实际时间是17:09,因此删除冒号,然后比较不会太工作....
在此上下文中,更改数据库时间数据是不可能的.
请帮助.如果我说错了一些事实,请纠正我.
我有一个 DateTime 对象,其中包含过去的时间戳。
我现在想检查这个日期时间是否早于 48 小时。
我怎样才能最好地比较它们?
问候
编辑:嗨,
谢谢您的帮助。这是辅助方法。有什么命名建议吗?
    protected function checkTemporalValidity(UserInterface $user, $hours)
{
    $confirmationRequestedAt = $user->getConfirmationTokenRequestedAt();
    $confirmationExpiredAt = new \DateTime('-48hours');
    $timeDifference = $confirmationRequestedAt->diff($confirmationExpiredAt);
    if ($timeDifference->hours >  $hours) {
        return false;
    }
    return true;
}
为什么我dump()在使用它之前只能到达我的日期对象?
这是我的功能:
public function checkSubscriptionEndDate($user){
    $subscriptionEndDate = $user->getSubscriptionEndDate();
    dump($subscriptionEndDate);
    if($subscriptionEndDate==null){
        $subscriptionEndDateMessage = $this->get('translator')->trans('subscriptionEndDateMessage');
        $subscriptionStatus = "error";
    }else{
        $subscriptionEndDateDate = $subscriptionEndDate->date;
        // CHECK IF SUBSCRIPTION END DATE IS BEFORE NOW
        if (date('now') < $subscriptionEndDateDate) {
            dump('before');
            $subscriptionStatus = "success";
            $subscriptionEndDateMessage = $this->get('translator')->trans('subscriptionStatusSuccess').' '.date('d/m/Y',strtotime($subscriptionEndDateDate));
        }else{
            dump('after');
            $subscriptionStatus = "error";
            $subscriptionEndDateMessage = $this->get('translator')->trans('subscriptionStatusError').' '.date('d/m/Y',strtotime($subscriptionEndDateDate));
        }   
    }
    return array(
        'subscriptionEndDateMessage' => $subscriptionEndDateMessage,
        'subscriptionStatus' => $subscriptionStatus
    );
    return $subscriptionEndDateMessage;
}
当我这样做时,页面按预期加载,没有问题.但如果我删除这一行:
dump($subscriptionEndDate); 
我无法再加载$subscriptionEndDate->date此错误页面中所示:
在我的代码中,我有这样的场景:
<?php
     $start = "03:00:00:am";
     $end   = "08:00:00:pm";
      if($start > $end) {}   
?>
我尝试使用 unix 时间戳,但没有成功。
开始时间,结束日期和结束时间变量.
日期变量已格式化 yyyy-mm-dd 
时间变量已格式化hh-mm(但仅在小时数可用时,例如,分钟始终为00)
我可以将这些变量插入到我的数据库中没有问题,但在此之前,我想检查开始日期和时间是否在结束日期和时间之前.我知道如何检查时间是否更早,日期更早,但我无法一起检查时间和日期,我将不胜感激任何帮助?
$_POST['start_time']
$_POST['end_time']
$_POST['start_date']
$_POST['end_date']
是变量以及我如何抓住它们.