在 php 中为两个不同的日期执行
Do While in php for two different dates
想要提醒Effective Date,直到满足条件。
代码:-
$effective_date = '2020/09/03';
$last_date = '2020/12/03';
$last_date = new DateTime($last_date);
$effective_date = new DateTime($effective_date);
do{
$edate = $effective_date->format('Y/m/d');
echo "<script>alert('".$edate."');</script>";
$nxtdate = date('Y-m-d', strtotime("+1 months", strtotime($edate)));
$effective_date = new DateTime($nxtdate);
} while($effective_date > $last_date);
它只提醒一次,但我的预期是应该提醒 3 次
它只提醒一次,因为您的 while
条件不正确。
请注意,do { ... } while (condition)
循环将至少 运行 一次,并且只要 condition
为 true
就会继续,直到它变为 true
.
将while($effective_date > $last_date)
改为while($effective_date < $last_date)
:
$effective_date = '2020/09/03';
$last_date = '2020/12/03';
$last_date = new DateTime($last_date);
$effective_date = new DateTime($effective_date);
do{
$edate = $effective_date->format('Y/m/d');
echo "<script>alert('".$edate."');</script>";
$nxtdate = date('Y-m-d', strtotime("+1 months", strtotime($edate)));
$effective_date = new DateTime($nxtdate);
} while($effective_date < $last_date);
输出:
<script>alert('2020/09/03');</script><script>alert('2020/10/03');</script><script>alert('2020/11/03');</script>
更新
如果要在执行循环内的语句之前检查 condition
,请改用 while
循环:
while ($effective_date < $last_date) {
$edate = $effective_date->format('Y/m/d');
echo "<script>alert('".$edate."');</script>";
$nxtdate = date('Y-m-d', strtotime("+1 months", strtotime($edate)));
$effective_date = new DateTime($nxtdate);
}
想要提醒Effective Date,直到满足条件。
代码:-
$effective_date = '2020/09/03';
$last_date = '2020/12/03';
$last_date = new DateTime($last_date);
$effective_date = new DateTime($effective_date);
do{
$edate = $effective_date->format('Y/m/d');
echo "<script>alert('".$edate."');</script>";
$nxtdate = date('Y-m-d', strtotime("+1 months", strtotime($edate)));
$effective_date = new DateTime($nxtdate);
} while($effective_date > $last_date);
它只提醒一次,但我的预期是应该提醒 3 次
它只提醒一次,因为您的 while
条件不正确。
请注意,do { ... } while (condition)
循环将至少 运行 一次,并且只要 condition
为 true
就会继续,直到它变为 true
.
将while($effective_date > $last_date)
改为while($effective_date < $last_date)
:
$effective_date = '2020/09/03';
$last_date = '2020/12/03';
$last_date = new DateTime($last_date);
$effective_date = new DateTime($effective_date);
do{
$edate = $effective_date->format('Y/m/d');
echo "<script>alert('".$edate."');</script>";
$nxtdate = date('Y-m-d', strtotime("+1 months", strtotime($edate)));
$effective_date = new DateTime($nxtdate);
} while($effective_date < $last_date);
输出:
<script>alert('2020/09/03');</script><script>alert('2020/10/03');</script><script>alert('2020/11/03');</script>
更新
如果要在执行循环内的语句之前检查 condition
,请改用 while
循环:
while ($effective_date < $last_date) {
$edate = $effective_date->format('Y/m/d');
echo "<script>alert('".$edate."');</script>";
$nxtdate = date('Y-m-d', strtotime("+1 months", strtotime($edate)));
$effective_date = new DateTime($nxtdate);
}