0

为什么 $now2 不起作用?

$now = date('Y-m-d H:i:s', time()); 
$now2 = date("Y-m-d H:i:s", strtotime( "$now + 0.5 secs"));

或者我怎样才能让它工作?

4

3 回答 3

2

它现在工作的原因是因为PHP不承认0.5 secs有有效

0.5 secs不是有效的日期格式..但它是有效的microtime

尝试

$now = date('Y-m-d H:i:s', time());
var_dump(strtotime( "$now + 1 secs"));

输出

int 1334188908
于 2012-04-12T00:03:43.753 回答
2

time() 返回自纪元以来的秒数。它对几分之一秒一无所知。如果您需要这种级别的准确性,则需要使用 microtime()(请参阅: http: //php.net/manual/en/function.microtime.php

编辑:您当然不能在 date() 格式中使用 microtime,因此您需要事先进行计算然后使用它。如同:

$now = microtime(true);
$newtime = $now + 0.5;

echo date("Y-m-d H:i:s", round($newtime,0) );

根据您的要求,您可能更喜欢使用与 round() 不同的函数来使 $newtime 和 integer 再次适合使用 date() 进行格式化

于 2012-04-12T00:15:48.837 回答
1

Unix 时间戳(即time()返回)的分辨率仅为 1 秒。所以你不能增加半秒。

于 2012-04-12T00:15:01.930 回答