我试图从日期中减去 1 个月。
$today = date('m-Y');
这给出了:08-2016
我怎样才能减去一个月得到 07-2016
?
原文由 Grant 发布,翻译遵循 CC BY-SA 4.0 许可协议
我试图从日期中减去 1 个月。
$today = date('m-Y');
这给出了:08-2016
我怎样才能减去一个月得到 07-2016
?
原文由 Grant 发布,翻译遵循 CC BY-SA 4.0 许可协议
我意识到这是一篇旧帖子,但我一直在解决同样的问题,这就是我想出的解释所有可变性的方法。这个函数只是试图获取相对日期,所以上个月的同一天,或者如果您在最后一天,则为一个月的最后一天,而不管一个月有多少天。所以目标是’2010-03-31’并减去一个月,我们应该输出’2010-02-28’。
private function subtractRelativeMonth(DateTime $incomingDate): DateTime
{
$year = $incomingDate->format('Y');
$month = $incomingDate->format('m');
$day = $incomingDate->format('d');
$daysInOldMonth = cal_days_in_month(CAL_GREGORIAN, $month, $year);
if ($month == 1) { //It's January, so we have to go back to December of prior year
$month = 12;
$year--;
} else {
$month--;
}
$daysInNewMonth = cal_days_in_month(CAL_GREGORIAN, $month, $year);
if ($day > $daysInNewMonth && $month == 2) { //New month is Feb
$day = $daysInNewMonth;
}
if ($day > 29 && $daysInOldMonth > $daysInNewMonth) {
$day = $daysInNewMonth;
}
$adjustedDate = new \DateTime($year . '-' . $month . '-' . $day);
return $adjustedDate;
}
原文由 Ryan Pyeatt 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答542 阅读✓ 已解决
输出