我有时间:
$t='2019-03-13 11:16:29'
我如何减去一毫秒?
我用一分钟的时间来使用它:
date('Y-m-d H:i:s', strtotime("-1 minute", strtotime($t)));
答案 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毫秒。