3个月日期间隔循环
3 Months date Interval Looping
我想以 3 个月为间隔循环月份,请参见下面的代码:
for($i=1; $i<=3; $i++){
$date=date('d-m-Y',strtotime("$i*3 month"));
echo "$date"."<br>";
}
但得到以下结果:
01-01-1970
01-01-1970
01-01-1970
我想达到以下结果:
19-03-2022
19-06-2022
19-09-2022
您的主要问题是 "$i*3 month"
不会进行计算 *3
,因此计算结果为 "1*3 month"
,strtotime
无法理解。为了解决这个问题,您必须先进行计算,然后进行连接(而不是直接插值),例如:
for($i = 1; $i <= 3; $i++){
$date=date('d-m-Y',strtotime($i * 3 . " month"));
echo "$date"."<br>";
}
你可以加强这个,事实上 strtotime
有第二个参数允许你指定一个基本时间戳:
for($i = 0; $i < 3; $i++){
$date=date('d-m-Y',strtotime($i * 3 . " month", strtotime('2022-03-19')));
echo "$date"."<br>";
}
strtotime
可能不是最好的选择。我猜你最终想要使用的是 DateTime
、DateInterval
和 [=32] 的组合=]DatePeriod
function generateDates(string $startDate, int $count): array {
$date = new DateTime($startDate);
$dates = [ $date->format('d-m-Y') ];
for ($i = 0; $i < $count - 1; $i++) {
$dateTime = $date->add(new DateInterval('P3M'));
$dates[] = $dateTime->format('d-m-Y');
}
return $dates;
}
$result = generateDates('2022-03-19', 8);
print_r($result); // This will print:
// Array
// (
// [0] => 19-03-2022
// [1] => 19-06-2022
// [2] => 19-09-2022
// [3] => 19-12-2022
// [4] => 19-03-2023
// [5] => 19-06-2023
// [6] => 19-09-2023
// [7] => 19-12-2023
// )
我想以 3 个月为间隔循环月份,请参见下面的代码:
for($i=1; $i<=3; $i++){
$date=date('d-m-Y',strtotime("$i*3 month"));
echo "$date"."<br>";
}
但得到以下结果:
01-01-1970
01-01-1970
01-01-1970
我想达到以下结果:
19-03-2022
19-06-2022
19-09-2022
您的主要问题是 "$i*3 month"
不会进行计算 *3
,因此计算结果为 "1*3 month"
,strtotime
无法理解。为了解决这个问题,您必须先进行计算,然后进行连接(而不是直接插值),例如:
for($i = 1; $i <= 3; $i++){
$date=date('d-m-Y',strtotime($i * 3 . " month"));
echo "$date"."<br>";
}
你可以加强这个,事实上 strtotime
有第二个参数允许你指定一个基本时间戳:
for($i = 0; $i < 3; $i++){
$date=date('d-m-Y',strtotime($i * 3 . " month", strtotime('2022-03-19')));
echo "$date"."<br>";
}
strtotime
可能不是最好的选择。我猜你最终想要使用的是 DateTime
、DateInterval
和 [=32] 的组合=]DatePeriod
function generateDates(string $startDate, int $count): array {
$date = new DateTime($startDate);
$dates = [ $date->format('d-m-Y') ];
for ($i = 0; $i < $count - 1; $i++) {
$dateTime = $date->add(new DateInterval('P3M'));
$dates[] = $dateTime->format('d-m-Y');
}
return $dates;
}
$result = generateDates('2022-03-19', 8);
print_r($result); // This will print:
// Array
// (
// [0] => 19-03-2022
// [1] => 19-06-2022
// [2] => 19-09-2022
// [3] => 19-12-2022
// [4] => 19-03-2023
// [5] => 19-06-2023
// [6] => 19-09-2023
// [7] => 19-12-2023
// )