如何使用PHP的date()函数获取UTC / GMT +/-时间戳?例如,如果我尝试
date("Y-m-d H:i:s", time());
我将获得Unix时间戳;但我需要根据当地时间获取字符串为GMT / UTC +/- 0400或GMT / UTC +/- 1000的UTC / GMT时间戳。
如何使用PHP的date()函数获取UTC / GMT +/-时间戳?例如,如果我尝试
date("Y-m-d H:i:s", time());
我将获得Unix时间戳;但我需要根据当地时间获取字符串为GMT / UTC +/- 0400或GMT / UTC +/- 1000的UTC / GMT时间戳。
Answers:
使用gmdate
将始终返回格林尼治标准时间。语法与相同date
。
gmdate("U") == time()
。)听起来像是潜在的错误行为。仔细检查并向PHP项目提交错误。
time()
返回“自Unix纪元(1970年1月1日00:00:00 GMT)以来的秒数”。注意GMT
。默认情况下,系统会将其转换为您的时区以便显示,这一事实是用户的方便。在内部,它始终是格林尼治标准时间。
一个简单的gmdate()就足够了
<?php
print gmdate("Y-m-d\TH:i:s\Z");
如先前的回答,从PHP 5.2.0开始,您可以使用DateTime
类并使用实例指定UTC时区DateTimeZone
。
DateTime __construct()文档建议在创建DateTime实例并指定时区以获取当前时间时传递“ now”作为第一个参数。
$date_utc = new \DateTime("now", new \DateTimeZone("UTC"));
echo $date_utc->format(\DateTime::RFC850); # Saturday, 18-Apr-15 03:23:46 UTC
DateTime
什么?自己运行它,如果没有它们,它似乎可以正常运行。
namespace A
在顶部具有声明,PHP将假定DateTime
引用A\DateTime
,这是错误的。添加反斜杠可解决此问题。我认为,即使您还没有使用名称空间,这也是一个好习惯。
$time = time();
$check = $time+date("Z",$time);
echo strftime("%B %d, %Y @ %H:%M:%S UTC", $check);
获取UTC日期
gmdate("Y-m-d H:i:s");
获取UTC时间戳
time();
即使您使用date_default_timezone_set
的代码也不会有不同的结果。
除了调用之外,gmdate
您还可以将此代码放在其余代码之前:
<?php
date_default_timezone_set("UTC");
?>
这将使您其余与日期/时间相关的呼叫使用GMT / UTC时区。
根据本地时间使用字符串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-12 12:10:11 -0400
然而,最大化可移植性/互操作性,我会建议使用ISO8601日期格式c
date_default_timezone_set('America/La_Paz');
echo date('c');
2018-01-12T12:10:11-04:00
date_default_timezone_set('Australia/Brisbane');
echo date('c');
2018-01-13T02:10:11 + 10:00
您也可以使用gmdate
,时区偏移字符串将始终为+00:00
date_default_timezone_set('America/La_Paz');
echo gmdate('c');
2018-01-12T16:10:11 + 00:00
date_default_timezone_set('Australia/Brisbane');
echo gmdate('c');
2018-01-12T16:10:11 + 00:00
您可以使用以下命令获取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)
);
}
在下面找到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");
?>