![](/img/trans.png)
[英]“DateTime->modify('+0 days')” Modifies DateTime Object
[英]DateTime->modify('+1 day') on for loop changes another variable
將$iDATEs
更改為2019-08-11。 我想原因是$i=$iDATEs
和$i->modify('+1 day')
<?php
$iDATEs = DateTime::createFromFormat('d/m/Y H:i:s', $_POST['fDATEs'].' 00:00:00');//2019-08-01
$iDATEe = DateTime::createFromFormat('d/m/Y H:i:s', $_POST['fDATEe'].' 00:00:00');//2019-08-10
for ($i=$iDATEs; $i <= $iDATEe; $i=$i->modify('+1 day')) {
echo $i->format("Y-m-d").'<br>';
//It's show 2019-08-01 to 2019-08-10
}
echo $iDATEs->format("Y-m-d").'<br>';//It's changes $iDATEs to 2019-08-11. I guess the reason is $i=$iDATEs and $i->modify('+1 day')
echo $iDATEe->format("Y-m-d").'<br>';
?>
即使DateTime
的DateTime
modify()
方法返回一個DateTime
變量也可以進行鏈接,但是它修改了變量本身的值,但不會返回新實例。 對於更改對象的任何方法都是如此: add
, sub
...
您可以使用從不修改原始變量的DateTimeImmutable
。
$iDATEs = DateTimeImmutable::createFromFormat('d/m/Y H:i:s', $_POST['fDATEs'].' 00:00:00');
$iDATEe = DateTimeImmutable::createFromFormat('d/m/Y H:i:s', $_POST['fDATEe'].' 00:00:00');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.