使用 microtime(true) 获取当前时间戳并乘以 1000,再通过 intval() 强制转换为整数即可生成 13 位毫秒时间戳。这种方法直接利用 php 内置函数,无需引入额外扩展,能确保返回值为纯数字类型,适用于大多数需要高精度时间的业务场景。

microtime(true) 的返回值精度如何保证
microtime(true) 返回的是一个浮点数,包含秒和小数部分。乘以 1000 后,小数部分被放大为毫秒级数值。由于浮点数在计算机中的表示存在精度限制,对于极长时间跨度或极高并发场景,直接转换可能产生微小误差,但在常规业务中,这种误差可以忽略不计。关键在于使用 intval() 去除小数部分,确保最终结果为整数。

$timestamp = intval(microtime(true) * 1000); echo $timestamp;
预期输出:一个 13 位的整数,例如 1715664000000。
立即学习“PHP免费学习笔记(深入)”;
为什么不用 date('u') 或其他方法
date('u') 仅支持微秒级的字符串格式,且在某些旧版本 PHP 中不支持,返回的是 6 位微秒而非毫秒。此外,它返回的是字符串,需要额外的转换步骤。相比之下,microtime(true) 更直接、高效,且兼容性更好。其他方法如手动计算或调用系统命令,不仅复杂,还可能引入性能瓶颈。

// 不推荐的方法示例
$microseconds = date('u'); // 返回 6 位微秒字符串
$milliseconds = intval($microseconds / 1000); // 需要额外转换
预期输出:若使用 date('u'),需先转换为数字再除以 1000,步骤繁琐且易出错。
如何处理时区对时间戳的影响
PHP 的时间戳是基于 UTC 时间的,与时区无关。因此,无论服务器设置为何种时区,microtime(true) 返回的值始终一致。这确保了在不同地区部署的应用程序生成的时间戳具有可比性。若需显示本地时间,应使用 date() 函数并指定时区参数,但时间戳本身不受影响。



















