使用PHP获取上个月的最后一天和下个月的第一天

时间:2019-12-06 12:15:17

标签: php date datetime

例如,如果我有:

  

'2020-01-01'

我想有两个约会:

-前一个月的最后一天:

  

'2019-12-31'

-下个月的第一天:

  

'2020-02-01'

我尝试使用echo date("Y-n-31", strtotime('2020-01-01'));之类的东西,但我不知道。

谢谢。

5 个答案:

答案 0 :(得分:2)

使用以下代码:

<?php

$month_end = new DateTime("last day of last month");
$month_ini = new DateTime("first day of next month");

echo $month_end->format('Y-m-d'); // will print, Last day of last month
echo $month_ini->format('Y-m-d'); // will print First day of next month

?>
  

带有带有用户定义日期(自定义日期)的Datetime对象

# with datetime object
$d1 = new DateTime('2019-12-01');
$d1 -> modify('last day of last month');
echo $d1 -> format('d.m.Y'), "\n";

$d2 = new DateTime('2019-12-01');
$d2 -> modify('first day of next month');
echo $d2 -> format('d.m.Y'), "\n";

Output:
30.11.2019
01.01.2020

答案 1 :(得分:1)

尝试一下,将strtotime()用于添加月份或减去月份

$date='2020-01-01';
echo date("Y-m-t", strtotime('-1 month'.$date)); //2019-12-31
echo date("Y-m-01", strtotime('+1 month'.$date)); //2020-02-01

答案 2 :(得分:1)

strtotime()
此php函数将英语文本日期时间说明转换为UNIX时间戳

  • 第一步将文本日期时间转换为时间戳
  • 现在您有了时间戳,然后使用date()函数

-前一个月的最后一天:

echo date("Y-m-d", strtotime("Last day of last month"));

-下个月的第一天:

echo date("Y-m-d", strtotime("First day of next month"));

答案 3 :(得分:0)

$date='2020-01-01';
echo date("Y-m-d", 'last day of previous month', strtotime($date)));
echo date("Y-m-d", 'first day of next month', strtotime($date)));

答案 4 :(得分:0)

您可以使用DateTime的方法modify()获得相对日期:

<?php

$dateOld = new \DateTimeImmutable('2020-01-01');

echo $dateOld->modify("last day of last month")->format('Y-m-d');
echo PHP_EOL;
echo $dateOld->modify("first day of next month")->format('Y-m-d');

在这里尝试:https://3v4l.org/qALa5