【问题标题】:How to add a month to a specific date with PHP?如何使用 PHP 将月份添加到特定日期?
【发布时间】:2018-05-15 16:41:14
【问题描述】:

我使用now() 函数来获取日期。我尝试添加具有许多功能的月份,例如:

$today= date("Y-m-d");
$date1 = date('Y-m-d', strtotime($today, ' + 1 month'));

在将 $date1 加载到 MySQL DB 之后,但是当我在 DB 中看到插入的日期是 0000-00-00。 这个月怎么加?

【问题讨论】:

    标签: php mysql date


    【解决方案1】:

    你把它弄得比它需要的复杂了。

    $date1 = date('Y-m-d', strtotime(' + 1 month'));
    

    Demo

    strtotime() 如果您不传递日期和时间,将假定“现在”。

    否则,按照您的调用方式,您应该会看到此错误:

    警告:strtotime() 期望参数 2 为整数,字符串在 /tmp/execpad-a8173d5d91cb/source-a8173d5d91cb 行中给出

    这是因为strtotime() 期望第二个参数是 Unix 时间戳,而您清楚地提供了一个字符串。您的代码的壁橱近似值是

    $today= time();
    $date1 = date('Y-m-d', strtotime(' + 1 month', $today));
    

    Demo

    如果日期仍然错误地进入数据库,那么您的日期代码之外的问题。

    【讨论】:

      【解决方案2】:

      MySQL 中的日期显示为0000-00-00 00:00:00 通常表明您尝试存储在数据库中的日期格式无效/MySQL 未将其识别为日期。可能是您插入或更新日期值的方式有问题?

      你也可以直接在MySQL中给一个日期加上月份,而无需在PHP中使用MySQL的内置函数DATE_ADD()进行计算:

      SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH);
      

      例如查询

      SELECT DATE_ADD('2018-05-15 12:34:56', INTERVAL 1 MONTH);
      

      将返回结果:

      +---------------------------------------------------+
      | DATE_ADD('2018-05-15 12:34:56', INTERVAL 1 MONTH) |
      +---------------------------------------------------+
      | 2018-06-15 12:34:56                               |
      +---------------------------------------------------+
      1 row in set (0.00 sec)
      

      使用它,您还可以直接将日期值更新为提前一个月的日期:

      UPDATE table_name SET column_name = DATE_ADD(NOW(), INTERVAL 1 MONTH)
      WHERE id = your_id;
      

      (根据需要替换table_namecolumn_nameidyour_id。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-27
        • 1970-01-01
        • 2022-01-26
        • 1970-01-01
        • 2022-12-03
        相关资源
        最近更新 更多