是的,hrtime() 返回的是相对时间(进程启动以来的纳秒数),而不是 unix 时间戳。要获取当前时间的 unix 时间戳,应使用 time() 函数;若需高精度时间戳,可使用 microtime(true)。

hrtime() 的返回值类型与用途是什么
hrtime() 返回的是从进程启动开始计算的相对时间,单位是纳秒。它主要用于测量代码执行耗时或生成单调递增的唯一 ID,不适合用于表示日历时间。

$result = hrtime();
var_dump($result); // 输出: array(2) { [0]=> int(123456789) [1]=> int(123456789) }在 PHP 7.3+ 中,hrtime() 默认返回一个包含两个整数的数组:[seconds, nanoseconds]。例如,上述代码输出显示进程已运行约 123456789 秒和 123456789 纳秒。若调用 hrtime(true),则返回一个整数类型的总纳秒数。
立即学习“PHP免费学习笔记(深入)”;
将任意网站转换为文件系统,自动抓取网站并将页面挂载为 Markdown 文件,可使用 grep、diff、cat 等标准 Unix 命令进行搜索、比较、读取和浏览。
如何获取高精度的 Unix 时间戳
若需要高精度的 Unix 时间戳,应使用 microtime(true),它返回浮点数形式的秒数,包含微秒精度。

$timestamp = microtime(true); var_dump($timestamp); // 输出: float(1698765432.123456)
microtime(true) 返回的是自 Unix 纪元(1970-01-01 00:00:00 UTC)以来的秒数,包含小数部分表示微秒。这与 time() 不同,后者只返回整数秒。对于大多数应用,microtime(true) 已足够精确。
当 hrtime() 被用于计算时间差时,结果是否可靠
是的,hrtime() 用于计算时间差是可靠的,因为它基于单调时钟,不受系统时间调整的影响。
$start = hrtime(true);
// 执行一些操作
$end = hrtime(true);
$elapsed_ns = $end - $start;
echo "Elapsed: {$elapsed_ns} ns";上述代码通过 hrtime(true) 获取开始和结束时的纳秒数,相减得到执行耗时。由于 hrtime() 使用单调时钟,即使系统在运行期间调整了时间(如 NTP 同步),时间差的计算依然准确。这是 hrtime() 相比 time() 或 microtime() 的优势所在。


















