當前位置: 首頁> 最新文章列表> 如何通過gettimeofday 和date 函數獲取自定義格式的時間?

如何通過gettimeofday 和date 函數獲取自定義格式的時間?

gitbox 2025-05-28

在PHP中,獲取時間是開發中非常常見的需求。 gettimeofday()date()函數都是用來處理時間的常用函數,但它們的用途和返回結果有所不同。本文將介紹如何結合gettimeofday()date()來獲取帶有自定義格式的時間字符串。


1. gettimeofday() 函數簡介

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
)

2. date() 函數簡介

date()是PHP中格式化時間的主要函數。它接收兩個參數:

  • 格式字符串(如Ymd H:i:s

  • 可選的時間戳(秒數)

示例:

 <?php
echo date('Y-m-d H:i:s'); // 輸出當前時間,例如 2021-05-23 15:19:43
?>

3. 結合gettimeofday 和date 實現自定義格式時間(帶微秒)

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;
?>

4. 使用函數封裝,便於復用

為了方便在項目中多次使用,可以將以上代碼封裝成函數:

 <?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'); // 自定義格式
?>

5. 結語

通過本文示例,你可以輕鬆地在PHP中結合gettimeofday()date()來實現帶微秒的自定義格式時間輸出。這樣能夠滿足更精細的時間需求,尤其適合日誌記錄、性能監控等場景。

想了解更多PHP時間函數的用法,可以參考gitbox.net/php-date-function