在PHP中,获取时间是开发中非常常见的需求。gettimeofday() 和 date() 函数都是用来处理时间的常用函数,但它们的用途和返回结果有所不同。本文将介绍如何结合 gettimeofday() 和 date() 来获取带有自定义格式的时间字符串。
gettimeofday() 函数返回当前时间的详细信息,包含秒数和微秒数。它的返回值是一个关联数组,常见字段如下:
sec:自 Unix 纪元(1970-01-01 00:00:00 UTC)起的秒数
usec:当前秒内的微秒数
示例:
<?php
$time = gettimeofday();
print_r($time);
?>
输出类似:
Array
(
[sec] => 1621766783
[usec] => 123456
[minuteswest] => 480
[dsttime] => 0
)
date() 是PHP中格式化时间的主要函数。它接收两个参数:
格式字符串(如 Y-m-d H:i:s)
可选的时间戳(秒数)
示例:
<?php
echo date('Y-m-d H:i:s'); // 输出当前时间,例如 2021-05-23 15:19:43
?>
date() 只能处理秒级时间,不能显示微秒。通过 gettimeofday() 可以获得微秒,然后和 date() 格式化的秒数结合,即可得到带微秒的时间字符串。
示例代码:
<?php
$time = gettimeofday();
$seconds = $time['sec'];
$microseconds = $time['usec'];
// 格式化秒部分
$formatted_time = date('Y-m-d H:i:s', $seconds);
// 拼接微秒部分,格式化为6位,不足补0
$micro_str = str_pad($microseconds, 6, '0', STR_PAD_LEFT);
// 最终时间字符串,格式如:2021-05-23 15:19:43.123456
echo $formatted_time . '.' . $micro_str;
?>
为了方便在项目中多次使用,可以将以上代码封装成函数:
<?php
function getFormattedMicrotime($format = 'Y-m-d H:i:s') {
$time = gettimeofday();
$seconds = $time['sec'];
$microseconds = $time['usec'];
$formatted_time = date($format, $seconds);
$micro_str = str_pad($microseconds, 6, '0', STR_PAD_LEFT);
return $formatted_time . '.' . $micro_str;
}
// 使用示例
echo getFormattedMicrotime(); // 默认格式
echo "\n";
echo getFormattedMicrotime('Y/m/d H:i:s'); // 自定义格式
?>
通过本文示例,你可以轻松地在PHP中结合 gettimeofday() 和 date() 来实现带微秒的自定义格式时间输出。这样能够满足更精细的时间需求,尤其适合日志记录、性能监控等场景。
想了解更多PHP时间函数的用法,可以参考gitbox.net/php-date-function。