将 gettimeofday() 返回的秒和微秒拼成毫秒,核心做法是将秒数乘以 1000 后加上微秒除以 1000 的整数部分。由于 php 默认使用浮点数运算,直接相加即可得到高精度的毫秒时间戳,无需担心精度丢失。

gettimeofday() 返回的数据结构是怎样的
该函数返回一个关联数组,包含 sec(秒)和 usec(微秒)两个键。要获取毫秒,必须同时处理这两个字段,因为单独的秒或微秒都无法直接构成完整的毫秒级时间戳。

$tv = gettimeofday(); $milliseconds = ($tv['sec'] * 1000) + (int)($tv['usec'] / 1000); echo $milliseconds;
为什么需要手动计算而不是直接用 microtime(true)
虽然 microtime(true) 能直接返回浮点型的时间戳,但在某些特定场景下,开发者可能需要显式控制精度或处理旧版代码中的数组结构。手动计算可以确保结果始终是整数类型的毫秒值,避免浮点数运算可能带来的微小误差。

$tv = gettimeofday(); $milliseconds = ($tv['sec'] * 1000) + (int)($tv['usec'] / 1000); echo gettype($milliseconds); // integer
如果 usec 不足 1000 会怎样
当微秒部分小于 1000 时,除以 1000 后的整数部分为 0,这不会影响最终结果,因为毫秒的最小单位就是 1,不足 1 毫秒的部分会被截断。这是符合预期的行为,因为毫秒本身无法表示亚毫秒级的精度。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











