web-dev-qa-db-ja.com

PHPのUTC時間を取得します

PHPのdate()関数を使用してUTC/GMT +/-タイムスタンプを取得するにはどうすればよいですか?たとえば、私がしようとすると

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

Unixタイムスタンプを取得します。しかし、ローカルタイミングに基づいて、文字列GMT/UTC +/- 0400またはGMT/UTC +/- 1000のUTC/GMTタイムスタンプを取得する必要があります。

gmdate を使用すると、常にGMT日付が返されます。構文はdateと同じです。

96
nikc.org

単純なgmdate()で十分です

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

以前の回答 のように、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
38
Jessedc
$time = time();
$check = $time+date("Z",$time);
echo strftime("%B %d, %Y @ %H:%M:%S UTC", $check);
33
date("Y-m-d H:i:s", time() - date("Z"))
14
Allanrbo

gmdateを呼び出す以外に、このコードを残りのコードの前に置くこともできます。

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

これにより、GMT/UTCタイムゾーンを使用するために、日付/時刻に関連する残りの呼び出しが行われます。

12
anubhava

UTC日付の取得

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

UTCタイムスタンプの取得

time();

コードにdate_default_timezone_setがあっても結果は変わりません。

8
StefansArya

引数なしでgmmktime関数を使用して、現在のUTCタイムスタンプを取得できます。

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

gmmktimeは、サーバー時間がUTCを使用している場合にのみ機能します。たとえば、私のサーバーはUS/Pacificに設定されています。上記の関数は太平洋時間をエコーバックします。

5
RicoRico

文字列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 date format 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

2
Jeff Puckett

以下を使用して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');
1
Dalip
/**
     * 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)
        );
    }
0
realmag777