PHP 从日期格式的日期中减去 1 个月 ('mY')

新手上路,请多包涵

我试图从日期中减去 1 个月。

 $today = date('m-Y');

这给出了:08-2016

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

原文由 Grant 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答
 <?php
  echo $newdate = date("m-Y", strtotime("-1 months"));

输出

07-2016

原文由 Passionate Coder 发布,翻译遵循 CC BY-SA 3.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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题