gpt4 book ai didi

php - 去年,今年,明年用 php DateTime

转载 作者:可可西里 更新时间:2023-11-01 13:40:05 25 4
gpt4 key购买 nike

我正在尝试使用 php DateTime 对象创建一个显示去年、今年和下一年的保管箱。

在我当前的代码中,我创建了三个对象,并且必须对其中的两个对象调用一个方法。这似乎对资源有点沉重。

$today = new DateTime();
$last_year=new DateTime();
$last_year->sub(new DateInterval('P1Y'));
$next_year = new DateTime();
$next_year->add(new DateInterval('P1Y'));
echo date_format($last_year, 'Y').' '.date_format($today, 'Y').' '.date_format($next_year, 'Y');

另一种我发现只使用一个对象的方法是

$today = new DateTime();
echo date_format($today->sub(new DateInterval('P1Y')), 'Y').' '.date_format($today->add(new DateInterval('P1Y')), 'Y').' '.date_format($today->add(new DateInterval('P1Y')), 'Y');

但这会变得非常困惑。有人可以告诉我使用 DateTime() 执行此操作的更好方法吗?因为我几个月都需要类似的东西?

最佳答案

根据您的 PHP 版本 (>= 5.4),您可以像这样整理它:-

$today = new DateTime();
$last_year=(new DateTime())->sub(new DateInterval('P1Y'));
$next_year = (new DateTime())->add(new DateInterval('P1Y'));
echo $last_year->format('Y').' '.$today->format('Y').' '.$next_year->format('Y');

See it working .

一个更具可读性和简洁性的选择可能是使用 \DateTimeImmutable

$today = new DateTimeImmutable();
$one_year = new DateInterval('P1Y');

$last_year = $today->sub($one_year);
$next_year = $today->add($one_year);
echo $last_year->format('Y').' '.$today->format('Y').' '.$next_year->format('Y');

See it working .

除此之外,这一切看起来都很好。在需要时担心优化。

关于php - 去年,今年,明年用 php DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20877325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com