【问题标题】:How to compare two dates correctly?如何正确比较两个日期?
【发布时间】:2015-01-22 10:20:54
【问题描述】:

我有一个从 MySQL 数据库获取日期 (dd.mm.YYYY) 的 Web 应用程序。

$date = ($_row["date"]);
$date = date('d.m.Y', strtotime($date));
$date = date('d.m.Y', strtotime("-5 day", strtotime($date)));

我这样格式化日期。

现在我想将数据库中的日期与今天的日期进行比较。

$today = date('d.m.Y');

我想在从今天起 5 天后显示 $date 的内容。 我现在的问题是如何检查这个? 我知道代码中有很多错误,但我不知道如何正确地做到这一点。

【问题讨论】:

    标签: php date compare


    【解决方案1】:

    你可以像这样使用strtotime:

    public static function dateDifferenceInDays($date1, $date2)
    {
        $str = strtotime($date1) - strtotime($date2);
        return floor($str / 3600 / 24);
    }
    

    【讨论】:

      【解决方案2】:

      您可以将 datetime 对象与函数 diff() 一起使用。分钟。 PHP 5.3.0

      很舒服:

      <?php
      
        // your date from your Database
        $date = new DateTime('26.01.2015');
        // today
        $today = new DateTime;
      
        // calculate difference
        $diff = $today->diff($date);
      
        // if difference = 5 days
        if($diff->format('%a') == 5) {
          echo '5 days away';
        }else{
          echo $diff->format('%a'). ' days away.';
        }
      
      ?>
      

      如果你有一个 php 版本 LESS 5.3.0 你可以使用函数 stepozer 在另一个答案中:

      <?php
        $_row["date"] = '27.01.2015';
      
        // your date from your Database
        $date = new DateTime( $_row["date"]);
        // today
        $today = new DateTime;
      
        // if difference = 5 days
        if(dateDifferenceInDays($date->format('d.m.Y'), $today->format('d.m.Y')) == 5){
          echo '5 days';
        }
      
        // function from stepozer
        function dateDifferenceInDays($date1, $date2)
        {
          $str = strtotime($date1) - strtotime($date2);
          return floor($str / 3600 / 24);
        }
      
      ?>
      

      【讨论】:

      • 感谢您的快速答复。我从你那里得到与 $date 相同格式的日期作为字符串。但这对我不起作用。当我使用您的代码时,它可以正常工作。我用 $_row["date"] 替换 '26.01.2015'
      • 不客气。如果您接受我的回答,如果我的解决方案对您有用,您可以感谢我。 :)
      • so ... echo $_row["date"];并向我们​​展示它的内容:)
      • 我的 PHP 版本是 PHP 版本 5.2.5。我在另一台服务器上测试了你的相同代码,它可以工作。这个代码 sn-p 是 5.2.5 旧吗?
      • 哦..是的。你说得对:php.net/manual/de/datetime.diff.php diff 函数仅适用于 (PHP 5 >= 5.3.0)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多