日期时间('现在') 在睡眠() 后未修改



我有以下代码

$now = new DateTime('now');
$string1 = $now->format('Y-m-d H:i:s');
sleep(5);
$now->modify('now');        
$string2 = $now->format('Y-m-d H:i:s');
sleep(10);
$now->modify('now');        
$string3 = $now->format('Y-m-d H:i:s');
echo $string1 . '<br>';
echo $string2 . '<br>';
echo $string3 . '<br>';

我希望每一行的时间都不同。令人惊讶的是,输出是这样的。

2020-11-27 17:35:05
2020-11-27 17:35:05
2020-11-27 17:35:05

我怀疑这是缓冲区刷新问题,所以添加了$string变量,但它仍然是一样的。有人能解释为什么会这样吗?谢谢

谨致问候,Marcin

只需忽略'now'参数。PHP手册中也对此进行了说明。使用创建时

$now = date_create(); // or new DateTime;

参数是否为"0"并不重要;现在";或者没有。

我的建议:总是用新的DateTime重新创建当前时间。

您可以使用DateTime::add进行此操作,如:

<?php
$now = new DateTime('now');
$string1 = $now->format('Y-m-d H:i:s');
sleep(5);
// DateInterval accepts a formatted period specifier:
// P = Period
// T = Time
// 5 = 5 units
// S = Seconds
$now->add(new DateInterval('PT5S'));
$string2 = $now->format('Y-m-d H:i:s');
sleep(10);
$now->add(new DateInterval('PT10S'));
$string3 = $now->format('Y-m-d H:i:s');
echo $string1 . '<br>';
echo $string2 . '<br>';
echo $string3 . '<br>';

最新更新