php - 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--- ...
解决方案
当有一个完整的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
推荐阅读
- java - 来自 DAY、MONTH、YEAR 的日期对象
- sql - PostgreSQL:范围内的天数总和
- macos - 使用 ssh 密钥连接到 gitlab 项目
- javascript - Javascript:Angular:我可以将超类和子类的 HTML 结合起来吗?
- post - 如何使用 ACF 在自定义页面上显示所有 oembed 字段
- clojure - 在 Clojure 中,如何在不使用特殊点符号的情况下调用对象的方法?
- reactjs - 使用 redux 时导出 const functionName props undefined
- pygame - Python游戏:如何通过敲击相应的键来消除字母?
- html - 带有行的 boostrap 面板标题导致边框粘在面板主体填充宽度上
- android - 当我添加 Firestore 时,Android Studio 应用程序崩溃