首页 > 解决方案 > php中的日期问题

问题描述

我想从用户选择的日期开始每三个月打印一次日期,从用户选择的日期开始,但是当我进行增量时,循环中断并且只打印第一个日期,可以帮助我,请

这是我在 PHP 中的代码

$fecha = date('m/d/Y',strtotime($_POST['fecha']));
printf( date('d/m/Y',strtotime($fecha)).'----');
$fin = date('m/d/Y',strtotime($fecha."+ 1 year"));
printf(date('d/m/Y',strtotime($fin)).'----');
if($fecha<$fin){
    $fecha = date('m/d/Y',strtotime($fecha."+ 1 month"));
    printf( date('d/m/Y',strtotime($fecha)));
}
<form method="POST" action="./fechas.php">
<input type="date" name="fecha" id="fecha">
<input type="submit" value="enviar">
</form>

这是输出:

在此处输入图像描述

我想打印这个:

15/10/2020---- 15/11/2020---- 15/12/2020--- ...

标签: phphtmldate

解决方案


当有一个完整的DateTime库让您的生活更轻松时,您会使用最不可靠的函数反复重新格式化和重新解析日期和时间间隔。

$input = new DateTime('2020-09-24', new DatetimeZone('UTC'));
$past = (clone $input)->sub(new DateInterval('P1Y'));
$period = new DateInterval('P3M');

$cur = clone $past;
do {
    echo $cur->format('Y-m-d') . "\n";
    $cur->add($period);
} while( $cur <= $input );

输出:

2019-09-24
2019-12-24
2020-03-24
2020-06-24
2020-09-24

推荐阅读