获取 PHP 中一天/一个月的最后一次出现


Getting the last occurrence of a day/month in PHP

我想知道是否有一种简单的方法(例如使用 strtotime)可以获取日/月组合中最后一次出现的 unix 时间。例如,如果我今天(2012 年 5 月 9 日)要求"9 月 1 日",我会得到1314835200(2011 年 9 月 1 日),但如果代码在今年 10 月再次运行,我会得到1346457600(2012 年 9 月 1 日),如果我从现在起 1 年后运行它,也是如此。

能够向前和向后完成将是一个巨大的奖励。

$month = 9;
$day = 1;
$timestamp = mktime(0, 0, 0, $month, $day);
if ($timestamp > time()) {
    $timestamp = mktime(0, 0, 0, $month, $day, date('Y') - 1);
}