gpt4 book ai didi

php - 在 PHP 中使用 DateTime 生成不同的日期字符串

转载 作者:行者123 更新时间:2023-12-04 15:56:22 26 4
gpt4 key购买 nike

这种每年生成 2 个日期字符串的方式有些丑陋

$obj_now = new DateTime();
$obj_year_ago = new DateTime();
$obj_year_ago->modify( '- 1 year');
$string_now = $obj_now->format('Y-m-d') ;
$string_year_ago = $obj_year_ago->format('Y-m-d') ;

它有效,但对我来说似乎很笨重(因此可能效率低下)。

提出问题;如果我必须根据引用日期生成日期(这些以不同的方式以不同的形式使用)。每个日期是否需要一个对象,或者我可以执行计算以从一个 DateTime 对象生成字符串吗?

我看到的困难是如果我使用 $obj_now->modify()` 它不再是“现在”

最佳答案

Modify 更改 DateTime 对象,但不更改格式方法。以下是您可以执行以下操作的方法:

$curDate = new DateTime('Now');
$dates = [];
for($i=0;$i<3;$i++){
$dates[] = $curDate->format('Y-m-d');
$curDate->modify('-1 year');
}
var_dump($dates);
//array(3) { [0]=> string(10) "2021-11-04" [1]=> string(10) "2020-11-04" [2]=> string(10) "2019-11-04" }

如果不想修改改变原来的对象,可以使用DateTimeImmutable .为了得到和上面一样的结果,DateTimeImmutable 的代码是这样的:

$date = new DateTimeImmutable('Now');
$dates = [];
for($i=0;$i<3;$i++){
$curDate = $date->modify('-'.$i.' year');
$dates[] = $curDate->format('Y-m-d');
}
var_dump($dates);

有关详细信息,请参阅 DateTimeImmutable vs DateTime

关于php - 在 PHP 中使用 DateTime 生成不同的日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69837668/

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