在PHP 編程中,有時候我們需要獲取當前的格林威治標準時間(GMT),也稱為協調世界時(UTC)。 PHP 提供了一個非常便捷的方法組合: gmdate()函數搭配time()函數,就能輕鬆實現這一需求。
將這兩個函數結合使用,就可以得到當前的GMT 時間。
<?php
echo gmdate("Y-m-d H:i:s", time());
?>
這段代碼將會輸出類似以下格式的GMT 時間字符串:
2025-05-22 07:45:30
"Ymd H:i:s"是PHP 中常用的日期時間格式,表示年份-月份-日期小時:分鐘:秒。
time()返回當前的Unix 時間戳。
gmdate()接收這個時間戳,並按GMT 標準格式化時間。
跨時區的數據記錄:在國際化的應用中,統一使用GMT 時間有助於避免由於時區差異造成的數據混淆。
日誌系統:很多系統日誌使用GMT 時間格式,便於系統統一處理和比較。
API 時間戳要求:某些API 要求時間戳為GMT 時間,特別是在安全簽名校驗過程中。
有開發者容易混淆date()和gmdate() 。兩者的關鍵區別在於時區:
<?php
echo "Local time: " . date("Y-m-d H:i:s") . "\n";
echo "GMT time: " . gmdate("Y-m-d H:i:s") . "\n";
?>
如果你的服務器時區設置為東八區(如中國),那麼輸出可能如下:
Local time: 2025-05-22 15:45:30
GMT time: 2025-05-22 07:45:30
雖然gmdate()不直接支持毫秒,但可以通過microtime()拆分實現。例如:
<?php
$micro = microtime(true);
$seconds = floor($micro);
$milliseconds = round(($micro - $seconds) * 1000);
echo gmdate("Y-m-d H:i:s", $seconds) . ".$milliseconds GMT";
?>
輸出類似:
2025-05-22 07:45:30.123 GMT
若你部署的PHP 程序需要統一使用GMT 時間,可設置默認時區為UTC:
<?php
date_default_timezone_set('UTC');
?>
不過此時使用date()也會返回GMT 時間,就不再需要使用gmdate() 。
通過gmdate()和time()的組合,你可以非常方便地在PHP 中獲取當前的GMT 時間。這種方式在跨時區處理、日誌統一記錄和服務器端開發中非常實用。對於需要精確控制時間輸出的PHP 開發者來說,這無疑是一種值得掌握的技巧。
更多實戰代碼參考請訪問:
https://gitbox.net/snippets/php-gmtime