用PHP获取UTC时间

时间:2011-12-28 11:47:49

标签: php datetime utc

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

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

我会得到Unix时间戳;但我需要根据当地时间以GMT / UTC +/- 0400或GMT / UTC +/- 1000字符串获得UTC / GMT时间戳。

12 个答案:

答案 0 :(得分:96)

使用gmdate将始终返回GMT日期。语法与date相同。

答案 1 :(得分:79)

简单的 gmdate() 就足够了

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

答案 2 :(得分:38)

作为previously answered here,从PHP 5.2.0开始,您可以使用DateTime类,并使用DateTimeZone的实例指定UTC时区。

DateTime __construct() documentation建议在创建DateTime实例时指定“now”作为第一个参数,并指定时区来获取当前时间。

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

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

答案 3 :(得分:33)

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

答案 4 :(得分:14)

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

答案 5 :(得分:11)

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

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

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

答案 6 :(得分:7)

获取UTC日期

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

获取UTC时间戳

time();

即使您的代码上有date_default_timezone_set,结果也不会不同。

答案 7 :(得分:5)

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

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

gmmktime仅在您的服务器时间使用UTC时才有效。例如,我的服务器设置为US / Pacific。上面列出的函数回到了太平洋时间。

答案 8 :(得分:2)

  

根据当地时间以字符串GMT / UTC +/- 0400 或GMT / UTC +/- 1000

您的自定义format仅缺少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

答案 9 :(得分:1)

您可以使用以下内容获取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');

答案 10 :(得分:0)

/**
     * 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)
        );
    }

答案 11 :(得分:0)

下面找到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");
?>