我有以下代码
$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>';