在 PHP 中获取 UTC 时间
本文介绍如何使用五种方法在 PHP 中获取 UTC。 这些方法将使用 date_default_timezone_set()
、gmdate()
、strtotime()
、date()
和 DateTime 对象。
使用 gmdate() 获取 UTC 时间
gmdate()
函数将以 UTC 格式格式化日期和时间。 一旦您为 gmdate()
提供了您的日期时间格式,例如 Y-m-d H:i:s,它将以 UTC 显示。
我们在以下代码中将当前时区设置为密歇根州底特律。 这将显示底特律的时间以及 UTC 的时间。
示例代码:
<?php
// Use the time in Detroit, Michigan, as the default
// time.
date_default_timezone_set("America/Detroit");
// We get the current time in Detroit, Michigan.
$time_in_Detroit = date('Y-m-d H:i:s', time());
// We get the UTC time using the gmdate() function
$utc_time = gmdate("Y-m-d H:i:s");
// For comparison, we show the time in Detroit and
// what it'll be in UTC.
echo "The current time in Detroit is: " . $time_in_Detroit . PHP_EOL;
echo "The UTC is: " . $utc_time;
?>
输出(你会得到不同的结果):
The current time in Detroit is: 2022-07-27 17:32:36
The UTC is: 2022-07-27 21:32:36
使用 strtotime() 获取 UTC 时间
strtotime()
方法将文本日期时间解析为 Unix 时间戳。 在那之后,你可以用时间戳做你想做的事。
在下面的代码中,我们使用 gmdate()
从 strtotime()
获取时间戳。 然后我们将时间戳作为 date()
函数的第二个参数传递。
这样做允许您编写日期格式并获得 UTC 格式的结果。 为了比较,我们将脚本的时区设置为危地马拉。
示例代码:
<?php
// Use the time in Guatemala as the default
// time.
date_default_timezone_set("America/Guatemala");
// We get the current time in Guatemala
$time_in_Guatemala = date('Y-m-d H:i:s', time());
// We get the UTC UNIX timestamp
$utc_timestamp = strtotime(gmdate("M d Y H:i:s"));
// We convert the UNIX timestamp to UTC
$utc_time = date('Y-m-d H:i:s', $utc_timestamp);
// For comparison, we show the time in Guatemala
// and what it'll be in UTC.
echo "The time in Guatemala is: " . $time_in_Guatemala . PHP_EOL;
echo "The UTC is: " . $utc_time;
?>
输出(你会得到不同的结果):
The time in Guatemala is: 2022-07-27 15:48:01
The UTC is: 2022-07-27 21:48:01
使用 date() 获取 UTC 时间
我们将使用 date()
函数来格式化日期,但通过一些数学运算,date()
将返回 UTC。 数学涉及从纪元时间减去时区偏移量,然后将结果作为 date()
函数的第二个参数传递。
为了便于比较,我们将时区更改为澳大利亚阿德莱德。 当您运行下面的代码时,您将看到 UTC 以及它在阿德莱德的情况。
示例代码:
<?php
// Use the time in Adelaide, Australia, as the default
// time.
date_default_timezone_set("Australia/Adelaide");
// We get the current time in Adelaide
$time_in_Adelaide = date('Y-m-d H:i:s', time());
// We get the UTC time using the date() function.
$utc_time = date("Y-m-d H:i:s", time() - date("Z"));
// For comparison, we show the time in Adelaide
// and what it'll be in UTC.
echo "The time in Adelaide is: " . $time_in_Adelaide . PHP_EOL;
echo "The UTC is: " . $utc_time;
?>
输出(你会得到不同的结果):
The time in Adelaide is: 2022-07-28 07:56:31
The UTC is: 2022-07-27 22:26:31
使用 date_default_timezone_set() 获取 UTC 时间
date_default_timezone_set()
函数用于更改时区。 我们还可以通过将其参数更改为 UTC 来使用它来返回 UTC。
因此,无论 PHP 脚本中的时间如何,它将始终采用 UTC。
<?php
// Set the default time zone to UTC and all
// date and time of the current PHP script will
// be in UTC.
date_default_timezone_set("UTC");
// As usual, get the date, but this time, it'll
// return the time in UTC. That's because this script
// has its time zone set to UTC.
$utc_time = date('Y-m-d H:i:s', time());
echo "The UTC is: " . $utc_time;
?>
输出(你会得到不同的结果):
The UTC is: 2022-07-27 22:36:02
使用 DateTime 对象获取 UTC 时间
DateTime 对象和 DateTimeZone 对象的组合可以返回 UTC。 要返回 UTC,将 DateTime 的第一个和第二个参数设置为 now
和 new \DateTimeZone("UTC")
,然后您可以以 RFC 850 格式显示结果。
示例代码:
<?php
// Get the UTC using the DateTime object.
// Its first parameter should be the
// string "now". And its second parameter should
// be a new DateTimeZone object and its parameter
// should be the string "UTC".
$utc_time = new \DateTime("now", new \DateTimeZone("UTC"));
// Format the date to show it's a UTC date
// A sample output is: Wednesday, 27-Jul-22 15:02:41 UTC
echo $utc_time->format(\DateTime::RFC850);
?>
输出(你会得到不同的结果):
Wednesday, 27-Jul-22 23:00:42 UTC
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341