PHP从日期格式中减去1个月('m-Y')

Gra*_*ant 20 php date subtraction

我想从约会中减去1个月.

$today = date('m-Y');
Run Code Online (Sandbox Code Playgroud)

这给出了:08-2016

我怎样才能减去一个月才能得到07-2016

Mam*_*mta 40

 <?php 
  echo $newdate = date("m-Y", strtotime("-1 months"));
Run Code Online (Sandbox Code Playgroud)

产量

07-2016
Run Code Online (Sandbox Code Playgroud)

  • 注意:在使用此示例之前,请阅读有关以下边缘情况的警告 (2认同)
  • 如果您有 31 天,则 `strtotime("-1 Months")` 不起作用。 (2认同)

Ale*_*sov 10

警告!如果在一个月末打电话给上述例子将不起作用.

<?php
$now = mktime(0, 0, 0, 10, 31, 2017);
echo date("m-Y", $now)."\n";
echo date("m-Y", strtotime("-1 months", $now))."\n";
Run Code Online (Sandbox Code Playgroud)

将输出:

10-2017
10-2017
Run Code Online (Sandbox Code Playgroud)

以下示例将生成相同的结果:

$date = new DateTime('2017-10-31 00:00:00');
echo $date->format('m-Y')."\n";
$date->modify('-1 month');
echo $date->format('m-Y')."\n";
Run Code Online (Sandbox Code Playgroud)

有很多方法可以在另一个线程中找到解决问题的方法:PHP DateTime :: modify添加和减去月份

  • 它不起作用的原因是因为以下原因:`2017-10-29`的上个月是什么?2017-09-29 还有`2017-10-30`的上个月?2017-09-30 那`2017-10-31`的上个月呢?理论上`2017-09-31`,但是这一天不存在,然后它映射到`2017-10-01`。 (3认同)

Jak*_*zyk 7

根据您的 PHP 版本,您可以使用 DateTime 对象(如果我没记错的话,在 PHP 5.2 中引入):

<?php
$today = new DateTime(); // This will create a DateTime object with the current date
$today->modify('-1 month');
Run Code Online (Sandbox Code Playgroud)

您可以将另一个日期传递给构造函数,它不必是当前日期。更多信息:http : //php.net/manual/en/datetime.modify.php


Vin*_* VT 5

尝试这个,

$today = date('m-Y');
$newdate = date('m-Y', strtotime('-1 months', strtotime($today))); 
echo $newdate;
Run Code Online (Sandbox Code Playgroud)