【问题标题】:How to handle date and time with PHP?如何用 PHP 处理日期和时间?
【发布时间】:2010-11-04 20:31:01
【问题描述】:

我需要使用 PHP 对我的 MySQL 数据库中的时间和日期值进行更复杂的计算。

我需要添加或减去给定日期的不同值。

例如:

  • 减去 1 个月
  • 减去 30 天
  • 减去 4 周
  • 增加 4 个月
  • 增加 3 个月
  • 增加 90 天
  • 增加 2 年

请注意,减去 1 个月、4 周或 30 天是有区别的。

这样做的首选方法是什么?是否有任何聪明的库或者我可以用 PHP 自己的函数来做到这一点?

【问题讨论】:

    标签: php date datetime time


    【解决方案1】:

    来自http://php.net/manual/en/function.strtotime.php

    <?php
    echo strtotime("now"), "\n";
    echo strtotime("10 September 2000"), "\n";
    echo strtotime("+1 day"), "\n";
    echo strtotime("+1 week"), "\n";
    echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
    echo strtotime("next Thursday"), "\n";
    echo strtotime("last Monday"), "\n";
    ?>
    

    您可以添加第二个参数以使其添加到给定时间:

    echo strtotime("+1 week",$timestamp)
    

    【讨论】:

      【解决方案2】:

      您可以使用 PHP5 的 DateTimeDateInterval 对象的组合。

      $now = new DateTime();
      
      // 30 days ago
      $now->sub(new DateInterval("P30D");
      
      // 1 week ago
      $now->sub(new DateInterval("P1W");
      
      // 2 years from now
      $now->add(new DateInterval("P1Y");
      

      区间代码列表见the manual

      【讨论】:

      【解决方案3】:

      从 PHP 5.2 开始,您有了 DateTime 对象。 你可以这样做:

      $date = new DateTime; // now
      $date->modify('1 month ago');
      echo $date->format('Y-m-d');
      

      检查this link 以获得完整的sintax。

      【讨论】:

        【解决方案4】:

        PHP函数strtotime在这方面非常强大。

        例如:

        // 1 month ago
        $date = strtotime('-1 month');
        
        // 30 days ago
        $date = strototime('-30 days');
        

        【讨论】:

          【解决方案5】:
          <?php
          $date = date_create('2000-01-01');
          date_add($date, date_interval_create_from_date_string('10 days'));
          echo date_format($date, 'Y-m-d');
          ?>
          

          $date 现在将是“2000-01-11”。

          您也可以使用date_sub 减去时间量。

          更多:

          http://www.php.net/manual/en/datetime.add.php http://www.php.net/manual/en/datetime.sub.php

          【讨论】:

            【解决方案6】:

            查看strtotime() 函数。 http://php.net/manual/en/function.strtotime.php

            另请注意,您可以使用第二个参数来指示何时开始。

            strtotime('+1 day', mktime(0, 0, 0, 7, 1, 2000));
            

            【讨论】:

              【解决方案7】:

              尝试梨日期库。非常强大和灵活,具有添加周期的功能。它完全符合您的要求。

              http://pear.php.net/Date

              我们在一个日期密集型网络应用程序中使用它,我们必须添加大量时间变量周期并计算周数等。

              【讨论】:

                【解决方案8】:

                请看这个PHP dates

                【讨论】:

                  【解决方案9】:

                  根据您的应用程序,您将要使用 mysql 日期时间函数

                  http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add

                  或 strtotime 就像其他人所说的那样

                  【讨论】:

                    【解决方案10】:

                    这是另一个建议。如果你想操作来自mysql的信息,请尝试使用mysql提供的日期/时间函数here

                    【讨论】:

                      猜你喜欢
                      • 2013-08-29
                      • 2011-09-24
                      • 1970-01-01
                      • 2015-11-14
                      • 1970-01-01
                      • 2015-11-13
                      • 2016-07-25
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多