在 PHP 编程中,有时候我们需要获取当前的格林威治标准时间(GMT),也称为协调世界时(UTC)。PHP 提供了一个非常便捷的方法组合:gmdate() 函数搭配 time() 函数,就能轻松实现这一需求。
将这两个函数结合使用,就可以得到当前的 GMT 时间。
<?php
echo gmdate("Y-m-d H:i:s", time());
?>
这段代码将会输出类似以下格式的 GMT 时间字符串:
2025-05-22 07:45:30
"Y-m-d 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