在PHP 中, gmdate()函數用於根據格林威治標準時間(GMT)格式化一個日期和時間字符串。與date()函數不同, gmdate()返回的是GMT 時間,而不是服務器本地時間。它非常適合處理跨時區的日期時間需求。
在使用gmdate()格式化日期時,經常會遇到“補零”問題,比如小時、分鐘、秒、月份和日期,如果數字小於10,是不是要補零?其實, gmdate()提供了格式化字符來自動處理這一點。
d —— 代表月份中的第幾天,帶補零,範圍是01到31
j —— 不帶補零的日期,範圍是1到31
m —— 代表月份,帶補零,範圍是01到12
n —— 不帶補零的月份,範圍是1到12
H —— 24小時制,帶補零,範圍是00到23
G —— 24小時制,不帶補零,範圍是0到23
i —— 分鐘,帶補零,範圍是00到59
s —— 秒,帶補零,範圍是00到59
所以,只要你想自動補零,就使用帶補零的格式字符,比如d , m , H , i , s 。如果不想補零,則使用對應的不帶補零字符。
<?php
// 當前時間戳
$timestamp = time();
// 帶補零格式的日期時間
echo gmdate('Y-m-d H:i:s', $timestamp);
// 輸出示例: 2025-05-24 14:05:09
// 不帶補零的日期時間
echo gmdate('Y-n-j G:i:s', $timestamp);
// 輸出示例: 2025-5-24 14:5:9
?>
以上代碼說明, gmdate()根據格式字符本身自動決定是否補零,我們無需額外處理。
有些新手可能會嘗試用條件語句來判斷數字大小,再補零,比如:
<?php
$hour = gmdate('G');
if ($hour < 10) {
$hour = '0' . $hour;
}
echo $hour;
?>
這類寫法繁瑣且容易出錯。完全沒必要,因為用格式字符H就能自動補零。
使用gmdate()格式化日期時,只要用帶補零的格式字符即可自動補零,無需手動操作。
例如, d 、 m 、 H 、 i 、 s都會自動補零。
不帶補零使用j 、 n 、 G等格式字符。
更多gmdate()的格式化字符和用法,可以參考官方文檔: