得到UTC时间在PHP

如何使用PHP的date()函数得到UTC / GMT +/-时间戳? 例如,如果我尝试

date("Ymd H:i:s", time()); 

我将得到Unix时间戳; 但我需要根据本地时间,以stringGMT / UTC +/- 0400或GMT / UTC +/- 1000获取UTC / GMT时间戳。

使用gmdate将始终返回GMTdate。 语法与date相同。

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

 <?php print gmdate("Ymd\TH:i:s\Z"); 
 $time = time(); $check = $time+date("Z",$time); echo strftime("%B %d, %Y @ %H:%M:%S UTC", $check); 

正如以前在这里回答的那样 ,从PHP 5.2.0开始,您可以使用DateTime类,并使用DateTime实例指定UTC时区。

DateTime __construct()文档build议在创buildDateTime实例以获取当前时间时省略第一个参数。

 $date_local = new \DateTime(); $date_utc = new \DateTime(null, new \DateTimeZone("UTC")); echo $date_local->format(\DateTime::RFC850); # Saturday, 18-Apr-15 13:23:46 AEST echo $date_utc->format(\DateTime::RFC850); # Saturday, 18-Apr-15 03:23:46 UTC 

除了调用gmdate还可以在代码的其余部分放置这些代码:

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

这将使您的其他date/时间相关的呼叫使用GMT / UTC时区。

 date("Ymd H:i:s", time() - date("Z")) 

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

 $time = gmmktime(); echo date("Ymd H:i:s", $time); 

gmmktime只会在你的服务器时间使用UTC时才起作用。 例如,我的服务器设置为美国/太平洋地区。 上面列出的function回波reflection太平洋时间。

您可以使用以下来获取UTC时间:

 date_default_timezone_set('Asia/Calcutta'); $current_date = date("Y/m/dg:i A"); $ist_date = DateTime::createFromFormat( '"Y/m/dg:i A"', $current_date, new DateTimeZone('Asia/Calcutta') ); $utc_date = clone $ist_date; $utc_date->setTimeZone(new DateTimeZone('UTC')); echo 'UTC: ' . $utc_date->format('Ymd 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) ); }