Php减去一毫秒

时间:2019-03-14 08:13:12

标签: php time

我有时间:

$t='2019-03-13 11:16:29'

我如何减去一毫秒?

我用一分钟的时间来使用它:

date('Y-m-d H:i:s', strtotime("-1 minute", strtotime($t)));

2 个答案:

答案 0 :(得分:2)

strtotime函数返回一个时间戳,相对于现在给出的时间戳,它是自1970年1月1日00:00:00 UTC以来的秒数,或者如果没有提供now,则返回当前时间。 / p>

因此您不会从strtotime中获得任何毫秒数。您可以通过以下方式检查它:

echo date('Y-m-d H:i:s.u', strtotime('2019-03-13 11:16:29'));

它应打印以下内容:

2019-03-13 11:16:29.000000

这意味着如果您减去毫秒,那么它将始终等于减去所有秒...

但是您可以这样做:

date('Y-m-d H:i:s', strtotime('-1 millisecond', strtotime($t)));

尽管它仍将返回结果,而不用毫秒。所以这段代码:

$t = strtotime('2019-03-13 11:16:29');
echo date('Y-m-d H:i:s.u', $t); echo "\n";
echo date('Y-m-d H:i:s.u', strtotime('-1 second', $t)); echo "\n";
echo date('Y-m-d H:i:s.u', strtotime('-1 millisecond', $t));

将打印以下内容:

2019-03-13 11:16:29.000000
2019-03-13 11:16:28.000000
2019-03-13 11:16:28.000000

答案 1 :(得分:1)

自PHP 7.0.0起,存在一种称为“ v”的格式,持续毫秒。对于所有格式,请查看the manual。考虑到这一点,您可以轻松显示毫秒。

$date = $date = new DateTime('2019-03-13 11:16:29');
echo $date->format('v') . PHP_EOL;

$date->modify('-1 millisecond');
echo $date->format('v');

由于我们创建了不带毫秒的DateTime对象,因此结果将为999,因为在初始化时,DateTime对象的毫秒为000。

另一个毫秒级的示例类似于以下代码。

$date = new DateTime('2019-03-13 11:16:29.123456');
echo $date->format('Y-m-d H:i:s.u') . PHP_EOL;
$date->modify('-1 millisecond');

echo $date->format('Y-m-d H:i:s.u');

结果将是...

2019-03-13 11:16:29.123456 
2019-03-13 11:16:29.122456

如您所见,精确地减去了1毫秒。