PHP 和 Carbon:如何获得不同年份的相对时间

PHP and Carbon: How to get a relative time in a different year

我可以用这个new \Carbon\Carbon('last sun of September')得到今年九月的最后一个星期天。但是,如果我想要去年九月的最后一个星期日呢?

我试过这两个:

new \Carbon\Carbon('last sun of September last year')
new \Carbon\Carbon('last year last sun of September')

两者都给出了今年最后一个星期日的DD/MM,并将YYYY改为去年。

这似乎只能分两步完成。这些对我有用:

$lastYear = (new \DateTime('last year'))->format('Y');
$dt = new \DateTime('last sun of September ' . $lastYear);

$dt2 = new \DateTime('last year');
$dt2->modify('last sun of September');

var_dump($dt); // 2017-09-24 00:00:00.000000
var_dump($dt2); // 2017-09-24 00:00:00.000000

个人认为第二种方法更简洁。

我用 DateTime 测试了它,因为 Carbon 只是它的一个扩展,并且在内部使用 PHP DateTime 解析器。另见 http://php.net/manual/en/datetime.formats.relative.php