【问题标题】:PHP Calculating future date by adding days to a variable datePHP通过将天数添加到变量日期来计算未来日期
【发布时间】:2011-02-11 04:04:31
【问题描述】:

我在看这篇文章,它与我需要的很接近: PHP - How to count 60 days from the add date

但是,在该帖子中,计算是通过将 60 天添加到当前日期来执行的。我需要做的是根据可变日期(而不是当前日期)计算日期。

类似这样的:

$my_date = $some_row_from_a_database;
$date_plus_10_days = ???;

有人知道怎么做吗?

谢谢

【问题讨论】:

  • 数据库中的日期格式(时间戳)是什么?

标签: php math date


【解决方案1】:

您必须查看strtotime()。我想你的最终代码看起来像这样:

$dateVariable      = strtotime('2017-01-29');//your date variable goes here
$date_plus_60_days = date('Y-m-d', strtotime('+ 60 days', $dateVariable));
echo $date_plus_60_days;

如果您使用的是 PHP >= 5.2,我强烈建议您使用新的 DateTime 对象。例如如下:

$date_plus_60_days = new DateTime("2006-12-12");
$date_plus_60_days->modify("+60 days");
echo $date_plus_60_days->format("Y-m-d");

【讨论】:

    【解决方案2】:

    假设今天的日期是

    date_default_timezone_set('Asia/Calcutta');
    $today=date("Y-m-d");
    

    我可以在当前日期添加 10 天,如下所示:

    $date_afte_10_days = date('Y-m-d', strtotime("$today +10 days"));
    

    【讨论】:

      【解决方案3】:
      date('Y-m-d H:i:s', strtotime("2014-11-24 06:33:39" +35 days"))
      

      这将得到定义格式的计算日期。

      【讨论】:

        【解决方案4】:

        我看到您正在从数据库中检索数据。 如果您使用的是 mysql,则可以在 select 上执行此操作:

        例子:你需要表格的最后一个日期和这个日期——7天

        select max(datefield) as ultimaf, DATE_SUB(max(datefield),INTERVAL 7 DAY) as last7
        from table
        

        如果你想要今天的日期,很容易使用 curdate()。

        如果您需要选择过去 7 天计数的动态:

        select count(*) from table
        where DATE_SUB(CURDATE(),INTERVAL 7 DAY)<=datefield"
        

        【讨论】:

          【解决方案5】:

          使用 date_add

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

          $my_date = new DateTime($some_row_from_a_database);
          $date_plus_10_days = date_add($my_date, new DateInterval('P10D'));
          

          【讨论】:

          • 你应该提到这仅在 PHP 5.3.0 之后可用。
          【解决方案6】:

          您可以在“+10 天”部分之前添加一些内容:

          strtotime("2010-01-01 +10 days");
          

          【讨论】:

          • +1 今天学到了新东西。谢谢。可能OP想要转换回一些人类可读的字符串。所以,像 date('Y-m-d',strtotime("2010-01-01 +10 days"));
          • strototime 将时间戳作为第二个参数,该参数将用作您作为第一个参数放置的参考时间戳,因此如果 OP 从 MySQL 获得时间戳,他也可以做strtotime('+60 days', $timestampFromMySql);
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-20
          • 2023-04-02
          • 2023-04-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多