php 的毫秒时间戳精度取决于你使用的函数和版本,核心结论是:在 php 7.0+ 中,使用 microtime(true) 可以获得微秒级精度(6位小数),而 time() 仅返回秒级整数。若需毫秒级(3位小数)或更高精度的时间戳,应基于 microtime(true) 进行计算,或使用 hrtime(true)(php 7.3+)获取纳秒级高精度单调时钟。

microtime(true) 与 time() 的精度差异
time() 始终只返回秒级整数,无法直接获取毫秒;而 microtime(true) 返回浮点数,包含秒和微秒部分,实际精度可达微秒级。这是处理毫秒/微秒时间戳的基础。

$seconds = time(); // 例如: 1717020000 $microTime = microtime(true); // 例如: 1717020000.123456 $milliseconds = floor($microTime * 1000); $microseconds = floor($microTime * 1000000);
上述代码展示了如何从 microtime(true) 提取毫秒和微秒值。注意浮点数运算可能引入微小误差,但在绝大多数业务场景中足够精确。
hrtime(true) 在高精度场景下的应用
对于需要极高精度且不受系统时间调整影响的场景,PHP 7.3+ 引入了 hrtime(true),它返回纳秒级精度的单调时钟值。虽然不直接对应 Unix 时间戳,但可用于测量耗时或生成唯一序列号。
$nanoTime = hrtime(true); // 例如: 1234567890123456789 // 转换为毫秒时间戳需结合基准时间 $baseTime = hrtime(false); // 秒部分 $elapsedNanos = $nanoTime - $baseTime; // 相对偏移
hrtime(true) 的值是相对于某个不确定起点的纳秒计数,因此不能直接作为 Unix 时间戳使用,但适合性能测试或高精度排序。
浮点数精度问题对毫秒时间戳的影响
由于 microtime(true) 返回的是浮点数,在极端高并发或长时间运行后,浮点精度损失可能导致毫秒值出现微小偏差。建议在对精度要求极高的场景中使用整数运算或 gmp/bcmath 扩展。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











