【问题标题】:Php get how many days and hours left from a datephp获取一个日期还剩多少天和几小时
【发布时间】:2011-11-20 10:41:34
【问题描述】:

我有一个 created_at 保存日期喜欢这个“2011-09-23 19:10:18”我想得到剩下的日子和小时 直到日期到达。我怎么做?和数据库中的列名剩余天数每天自动更新剩余天数,请解决这个问题

【问题讨论】:

    标签: php date laravel-5.7


    【解决方案1】:

    PHP 片段:

    <?php
    
    //Convert to date
    $datestr="2011-09-23 19:10:18";//Your date
    $date=strtotime($datestr);//Converted to a PHP date (a second count)
    
    //Calculate difference
    $diff=$date-time();//time returns current time in seconds
    $days=floor($diff/(60*60*24));//seconds/minute*minutes/hour*hours/day)
    $hours=round(($diff-$days*60*60*24)/(60*60));
    
    //Report
    echo "$days days $hours hours remain<br />";
    ?>
    

    注意小时制和不考虑分钟/秒意味着它可能会稍微不准确。

    【讨论】:

    • 这个应该回答提出的问题。谢谢,也帮助了我
    • 那么有没有可能还剩几分钟??
    • @SenTisso 是的。将$hours 切换为使用floor 而不是round,从$diff 中减去$hours(如使用$days 以找到$hours),将结果除以60 并四舍五入(得到分钟) /*...*/$secondsPerHour=60*60; $secondsPerDay=60*60*24; $days=floor($diff/$secondsPerDay); $diff-=$days*$secondsPerDay; $hours=floor($diff/$secondsPerHour); $diff-=$hours*$secondsPerHour; $minutes=round($diff/60);
    【解决方案2】:

    这应该是你努力的种子。

    getdate(strtotime("2011-09-23 19:10:18"))
    

    完全转换:

    $seconds = strtotime("2011-09-23 19:10:18") - time();
    
    $days = floor($seconds / 86400);
    $seconds %= 86400;
    
    $hours = floor($seconds / 3600);
    $seconds %= 3600;
    
    $minutes = floor($seconds / 60);
    $seconds %= 60;
    
    
    echo "$days days and $hours hours and $minutes minutes and $seconds seconds";
    

    【讨论】:

      【解决方案3】:

      从 PHP 5.3.0 开始,您可以使用内置的 Date 对象:

      $datetime1 = new DateTime('2009-10-11');
      $datetime2 = new DateTime('2009-10-13');
      $interval = $datetime1->diff($datetime2);
      echo $interval->format('%R%a days');
      

      http://www.php.net/manual/en/book.datetime.php

      【讨论】:

      【解决方案4】:

      应该是这样的

      echo $date = date("Y-m-d H:i:s");echo "\n";
      
      $original=time($date);
      
      
      $modified = "2011-09-23 19:10:18";
      
      echo date("Y-m-d H:i:s",$modified);echo "\n";
      

      【讨论】:

        【解决方案5】:

        最简单的方法是从 CountZero 改进答案。我使用这个解决方案来计算报价到期前的剩余时间。除了前三行 CountZero 代码:

        $days = $interval->d;
        $hours = $interval->h;
        $minutes = $interval->i;
        $seconds = $interval->s;
        

        现在,您可以使用字符串函数来调节返回值、合并所有值或在值前添加“0”或“00”。

        【讨论】:

          【解决方案6】:

          您可以使用 date() 函数找到当前日期和时间,然后减去

          $x = 2011-09-23 - 当前日期

          这不会给你。剩余天数。

          对时间也一样..

          希望对你有帮助

          【讨论】:

            猜你喜欢
            • 2014-05-29
            • 2020-02-11
            • 2021-11-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-13
            • 2017-01-11
            • 1970-01-01
            相关资源
            最近更新 更多