我有这个:
$previousMonth = new DateTime('2019-12-31');
$previousMonth->modify('-1 month');我的理解是“-1个月”应该修改对象,而不考虑该月的天数,或者?
当然,我应该得到或期望得到的是11月底(2019-11-30),但我得到的是12月1日(同月)。顺便说一句,如果我将日期改为‘2019-12-30’(提前一天),那么它将是11月底。
如果我最初的假设不正确,那么可靠地计算上个月的最佳替代方案是什么?有什么想法吗?
发布于 2020-01-09 17:31:40
在php中获取上个月的最简单和最容易的方法是
$previousMonth = date("Y-n-j", strtotime("last day of previous month"));与其他线程Getting last month's date in php上的建议相同
发布于 2020-01-09 21:53:22
$date = "2019-12-31 00:00:00";
echo date('Y-m-d', strtotime($date . '-1month'));这会打印出2019-12-01,因为31/11不存在。
以下内容没有回答您的问题,但在将来可能会有所帮助。在处理日期时,我喜欢使用碳粉。你的问题可以很简单地用这个解决。
它有很多功能,使用起来非常简单,而且可以和Composer一起安装。
发布于 2020-01-09 17:23:20
要得到上个月的最后一天,可以得到当月的第一天,然后减去1秒或1天:
$previousMonth = new DateTime('2019-12-31');
$previousMonth->modify($previousMonth->format('Y-m-01')); // date is 2019-12-01 00:00:00
$previousMonth->modify('-1 sec');
echo $previousMonth->format('Y-m-d H:i:s') . PHP_EOL; // Outputs 2019-11-30 23:59:59
$previousMonth->modify('+1 sec'); // set back the original date 2019-12-01 00:00:00
$previousMonth->modify('-1 day');
echo $previousMonth->format('Y-m-d H:i:s'); // Outputs 2019-11-30 00:00:00https://stackoverflow.com/questions/59660447
复制相似问题