【问题标题】:How can I add dates in PHP [duplicate]如何在 PHP 中添加日期 [重复]
【发布时间】:2012-07-09 15:55:12
【问题描述】:

可能重复:
increment date by one month

我有以下代码来汇总日期:

$var1 = date("d/m/Y");
$dia = substr($var1,0,2);
$mes = substr($var1,3,2);
$a_o = substr($var1,6,4);
$date = $a_o."-".$mes."-".$dia;
$new_date = strtotime( "+3 month", strtotime($date));
$new_date = date('d/m/Y', $new_date);
echo $new_date;

这是我在 php.net 上找到的正常方法,但是当我尝试将 $var1 更改为另一个日期时,例如 '21/07/2020' 结果是 '31/01/1970',我不知道出了什么问题。我尝试了很多形式,但结果都是一样的。

我该如何解决这个问题?或者还有哪些其他形式可以将 X 个月添加到日期?

【问题讨论】:

    标签: php date strtotime


    【解决方案1】:

    查看为 5.3.0 添加的 date_add() 函数。

    DateTime::add -- date_add -- 添加天数、月数、年数、 DateTime 对象的小时、分钟和秒

    <?php
    $date = new DateTime('2000-01-01');
    $date->add(new DateInterval('P10D'));
    echo $date->format('Y-m-d') . "\n";
    ?> 
    

    还有为 5.2.0 添加的 date_modify() 函数。

    DateTime::modify -- date_modify -- 更改时间戳

    <?php
    $date = new DateTime('2006-12-12');
    $date->modify('+1 day');
    echo $date->format('Y-m-d');
    ?> 
    

    【讨论】:

    • +1 用于设置 OO 示例,同时仍然提到程序功能
    • 该代码有效,非常感谢!!! :) RobB
    • @nanaxr - 很高兴我能提供帮助。
    【解决方案2】:

    你完全错了。 date() 为您提供格式良好的 STRING。如果您想对日期进行数学运算,则需要使用原生 PHP 日期/时间值,它们是简单的整数 - unix 时间戳。

    您正在获取该 unix 时间戳(date() 中的默认值),将其转换为字符串,拆分该字符串,以不同的顺序重新组合该字符串,然后将其转换回时间戳,然后将时间戳转换为不同格式的字符串。这就像进行 500 英里的公路旅行,这样您就可以过马路。

    任何你不能简单做的理由:

    $new_date = date('d/m/Y', strtotime('+3 month'));
    

    并消除代码 sn-p 中的所有其他内容?

    【讨论】:

      【解决方案3】:

      在您的位置,我将转换时间戳中的日期,然后以秒为单位添加新日期(即 3 个月为 60 * 60 * 24 * 90 = 7 776 000 秒。)然后转换回日期:P

      【讨论】:

      • 一个月不一定是 30 天。
      • 事实上,不到一半的月份是 30 天。
      猜你喜欢
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 2017-01-16
      • 2012-08-18
      • 2012-11-15
      • 1970-01-01
      • 2021-03-05
      相关资源
      最近更新 更多