Date_sub() 在日期数组上

Date_sub() on a date array

我正在尝试从数组的每个日期中准确删除 1 年。

这是原始的 $periods 数组

Array ( [0] => 2020-06-01 [1] => 2020-07-01 [2] => 2020-08-01 [3] => 2020-09-01 [4] => 2021-01-01 [5] => 2022-01-01 [6] => 2022-06-01 [7] => 2022-08-01 [8] => 2022-10-01 [9] => 2023-04-01 )

我试过了

foreach ($periods as $p) {
date_sub($p,date_interval_create_from_date_string("1 year"));
echo date_format($p,"Y-m-d"). '<br>';
} 

它没有return任何东西... 任何指针将不胜感激。

首先将您的数组值数据类型设置为字符串 => "2020-06-01" ,然后尝试此代码:

foreach ($periods as $period) {
// convert date string to date model object
$periodDate = date_create($period); 
// subtract date string from coverted date string
date_sub($periodDate,date_interval_create_from_date_string("1 year"));
// covert subtracted date object to readable date fromat
echo date_format($periodDate,"Y-m-d");
} 

您可以使用下一个代码转换日期:

$res = array_map(
    // convert source string to time, subtract 1 year interval
    // and convert to 'Y-m-d' format in singe function

    fn($p) => date('Y-m-d', strtotime("-1 year", strtotime($p))),
    $periods
);

run PHP online