用 PHP 获取 UTC 时间

如何使用 PHP 的 date ()函数获取 UTC/GMT +/-时间戳

date("Y-m-d H:i:s", time());

我将获得 Unix 时间戳; 但是我需要基于本地时间获得字符串 GMT/UTC +/-0400或 GMT/UTC +/-1000的 UTC/GMT 时间戳。

325364 次浏览
$time = time();
$check = $time+date("Z",$time);
echo strftime("%B %d, %Y @ %H:%M:%S UTC", $check);

使用 gmdate总是返回一个 GMT 日期。语法与 date相同。

除了调用 gmdate之外,您还可以将这段代码放在其余代码之前:

<?php
date_default_timezone_set("UTC");
?>

这将使其余与日期/时间相关的调用使用 GMT/UTC 时区。

可以使用不带参数的 Gmmktime函数来获取当前的 UTC 时间戳:

$time = gmmktime();
echo date("Y-m-d H:i:s", $time);

Gmmktime 只有在服务器时间使用 UTC 时才能工作。例如,我的服务器设置为 US/Pacific。上面列出的功能回声太平洋时间。

一个简单的 Gmdate () 就足够了

<?php
print gmdate("Y-m-d\TH:i:s\Z");

作为 前情提要,从 PHP 5.2.0开始,您可以使用 DateTime类并通过 DateTimeZone实例指定 UTC 时区。

DateTime_ _ construction ()文档建议在创建 DateTime 实例并指定时区以获取当前时间时,将“ now”作为第一个参数传递。

$date_utc = new \DateTime("now", new \DateTimeZone("UTC"));


echo $date_utc->format(\DateTime::RFC850); # Saturday, 18-Apr-15 03:23:46 UTC

你可以用以下方法得到世界协调时:

date_default_timezone_set('Asia/Calcutta');


$current_date = date("Y/m/d g:i A");


$ist_date = DateTime::createFromFormat(
'"Y/m/d g:i A"',
$current_date,
new DateTimeZone('Asia/Calcutta')
);


$utc_date = clone $ist_date;
$utc_date->setTimeZone(new DateTimeZone('UTC'));


echo 'UTC:  ' . $utc_date->format('Y-m-d g:i A');
/**
* Converts a local Unix timestamp to GMT
*
* @param   int Unix timestamp
* @return  int
*/
function local_to_gmt($time = '')
{
if ($time === '')
{
$time = time();
}


return mktime(
gmdate('G', $time),
gmdate('i', $time),
gmdate('s', $time),
gmdate('n', $time),
gmdate('j', $time),
gmdate('Y', $time)
);
}
date("Y-m-d H:i:s", time() - date("Z"))

字符串 GMT/UTC +/-0400或基于本地计时的 GMT/UTC +/-1000

您的自定义 格式只是缺少 O给你的时区偏移从本地时间。

与格林尼治时间(GMT)的小时差异例如: + 0200

date_default_timezone_set('America/La_Paz');
echo date('Y-m-d H:i:s O');

2018-01-1212:10:11 -0400

然而,为了最大限度地实现可移植性/互操作性,我建议使用 ISO8601日期格式 c

date_default_timezone_set('America/La_Paz');
echo date('c');

2018-01-12 T12:10:11-04:00

date_default_timezone_set('Australia/Brisbane');
echo date('c');

2018年01月13日02:10:11 + 10:00

也可以使用 gmdate,时区偏移量字符串总是 +00:00

date_default_timezone_set('America/La_Paz');
echo gmdate('c');

2018-01-12 T16:10:11 + 00:00

date_default_timezone_set('Australia/Brisbane');
echo gmdate('c');

2018-01-12 T16:10:11 + 00:00

获取世界协调时日期

gmdate("Y-m-d H:i:s");

获取 UTC 时间戳

time();

即使代码中有 date_default_timezone_set,结果也不会有什么不同。

下面查找 PHP 代码以获取当前的 UTC (协调世界时)时间

<?php
// Prints the day
echo gmdate("l") . "<br>";


// Prints the day, date, month, year, time, AM or PM
echo gmdate("l jS \of F Y h:i:s A");
?>

您希望使用 gmdate 方法来获取 GMT 日期。

gmdate("Y-m-d H:i:s");

Gmdate 日期格式类似于 date ()方法中的格式。

$code->created_at->setTimezone('UTC')

这里是 $code-> create _ at = Asia/Dhaka Time.