<?php
// 当前时间戳对应的 GMT 时间,格式化为 年-月-日 小时:分钟:秒
echo gmdate('Y-m-d H:i:s');
?>
输出示例:
2025-05-24 06:30:00
这里返回的是格林威治时间的当前日期和时间。
gmdate 只会返回数字日期和时间部分,月份和星期不会转换成语言文本。它不会根据系统的 locale 设置改变语言。
例如:
<?php
echo gmdate('l, F j, Y'); // 输出类似:Saturday, May 24, 2025
?>
输出总是英文的 Saturday 和 May。
为了输出本地语言的日期格式,通常用 setlocale() 设置区域语言环境,然后用 strftime() 输出本地化的日期字符串。
但 strftime() 使用的是服务器本地时间,要结合 gmdate() 得到的 GMT 时间,可以用 gmstrftime()(PHP 8.1 起可用),或者手动调整时间戳。
示例:
<?php
// 设置语言环境为中文(中国)
setlocale(LC_TIME, 'zh_CN.UTF-8');
// 使用 gmstrftime 输出 GMT 时间的本地化日期
echo gmstrftime('%A %e %B %Y', time());
?>
这会输出中文的星期几、月份等。例如:
星期六 24 五月 2025
注意:gmstrftime() 在较老的 PHP 版本中可能不可用,可考虑使用 strftime() 并手动转换时间为本地时间。
如果服务器没有安装所需的语言包,或者想更灵活地控制语言,可以手动映射英文月份和星期到目标语言。
示例代码:
<?php
// 获取 GMT 时间
$timestamp = time();
// 英文星期和月份
$week_en = gmdate('l', $timestamp);
$month_en = gmdate('F', $timestamp);
// 中文星期和月份映射
$week_map = [
'Monday' => '星期一',
'Tuesday' => '星期二',
'Wednesday' => '星期三',
'Thursday' => '星期四',
'Friday' => '星期五',
'Saturday' => '星期六',
'Sunday' => '星期日',
];
$month_map = [
'January' => '一月',
'February' => '二月',
'March' => '三月',
'April' => '四月',
'May' => '五月',
'June' => '六月',
'July' => '七月',
'August' => '八月',
'September' => '九月',
'October' => '十月',
'November' => '十一月',
'December' => '十二月',
];
// 拼接输出中文格式日期
$day = gmdate('j', $timestamp);
$year = gmdate('Y', $timestamp);
echo $week_map[$week_en] . " " . $day . " " . $month_map[$month_en] . " " . $year;
?>
输出:
星期六 24 五月 2025
gmdate() 用于基于 GMT 时间格式化数字日期时间。
它不支持多语言环境的文本输出。
要实现多语言显示,可以配合 setlocale() + gmstrftime(),或者自行映射日期文本。
根据实际服务器环境和 PHP 版本,选择合适的方法。
<?php
// 设置语言环境
setlocale(LC_TIME, 'zh_CN.UTF-8');
// 获取当前 GMT 时间戳
$timestamp = time();
// 使用 gmstrftime 输出本地化日期(GMT 时间)
echo gmstrftime('%A %e %B %Y', $timestamp);
// 或手动映射(见上面示例)
?>