在 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() 的格式化字符和用法,可以参考官方文档: