PHP에서 UTC 시간 얻기

Habdul Hazeez 2023년6월20일
  1. gmdate()를 사용하여 UTC 시간 가져오기
  2. strtotime()을 사용하여 UTC 시간 가져오기
  3. date()를 사용하여 UTC 시간 가져오기
  4. date_default_timezone_set()을 사용하여 UTC 시간 가져오기
  5. DateTime 개체를 사용하여 UTC 시간 가져오기
PHP에서 UTC 시간 얻기

이 기사에서는 다섯 가지 방법을 사용하여 PHP에서 UTC를 얻는 방법을 설명합니다. 이러한 메서드는 date_default_timezone_set(), gmdate(), strtotime(), date()DateTime 개체를 사용합니다.

gmdate()를 사용하여 UTC 시간 가져오기

gmdate() 함수는 날짜와 시간을 UTC 형식으로 지정합니다. 예를 들어 날짜 시간 형식으로 gmdate()를 제공하면 Y-m-d H:i:s, UTC로 표시됩니다.

다음 코드에서 현재 시간대를 미시간 주 디트로이트로 설정했습니다. 그러면 디트로이트의 시간과 UTC의 시간이 표시됩니다.

예제 코드:

<?php
    // Use the time in Detroit, Michigan, as the default
    // time.
    date_default_timezone_set("America/Detroit");

    // We get the current time in Detroit, Michigan.
    $time_in_Detroit = date('Y-m-d H:i:s', time());

    // We get the UTC time using the gmdate() function
    $utc_time = gmdate("Y-m-d  H:i:s");

    // For comparison, we show the time in Detroit and
    // what it'll be in UTC.
    echo "The current time in Detroit is: " . $time_in_Detroit . PHP_EOL;
    echo "The UTC is: " . $utc_time;
?>

출력(다른 결과가 나타남):

The current time in Detroit is: 2022-07-27 17:32:36
The UTC is: 2022-07-27  21:32:36

strtotime()을 사용하여 UTC 시간 가져오기

strtotime() 메서드는 텍스트 날짜 시간을 Unix 타임스탬프로 구문 분석합니다. 그 후에는 타임스탬프를 사용하여 원하는 작업을 수행할 수 있습니다.

다음 코드에서는 gmdate()를 사용하여 strtotime()에서 타임스탬프를 얻습니다. 그런 다음 date() 함수의 두 번째 매개변수로 타임스탬프를 전달합니다.

이렇게 하면 날짜 형식을 작성하고 UTC로 결과를 얻을 수 있습니다. 비교를 위해 스크립트의 시간대를 과테말라로 설정했습니다.

예제 코드:

<?php
    // Use the time in Guatemala as the default
    // time.
    date_default_timezone_set("America/Guatemala");

    // We get the current time in Guatemala
    $time_in_Guatemala = date('Y-m-d H:i:s', time());

    // We get the UTC UNIX timestamp
    $utc_timestamp = strtotime(gmdate("M d Y H:i:s"));

    // We convert the UNIX timestamp to UTC
    $utc_time = date('Y-m-d H:i:s', $utc_timestamp);

    // For comparison, we show the time in Guatemala
    // and what it'll be in UTC.
    echo "The time in Guatemala is: " . $time_in_Guatemala . PHP_EOL;
    echo "The UTC is: " . $utc_time;
?>

출력(다른 결과가 나타남):

The time in Guatemala is: 2022-07-27 15:48:01
The UTC is: 2022-07-27 21:48:01

date()를 사용하여 UTC 시간 가져오기

date() 함수를 사용하여 날짜 형식을 지정하지만 일부 수학을 사용하면 date()가 UTC를 반환합니다. 수학은 epoch 시간에서 시간대 오프셋을 뺀 다음 결과를 date() 함수의 두 번째 매개변수로 전달하는 것과 관련됩니다.

비교를 위해 표준 시간대를 호주 애들레이드로 변경했습니다. 아래 코드를 실행하면 UTC와 애들레이드에서의 UTC가 표시됩니다.

예제 코드:

 <?php
    // Use the time in Adelaide, Australia, as the default
    // time.
    date_default_timezone_set("Australia/Adelaide");

    // We get the current time in Adelaide
    $time_in_Adelaide = date('Y-m-d H:i:s', time());

    // We get the UTC time using the date() function.
    $utc_time = date("Y-m-d H:i:s", time() - date("Z"));

    // For comparison, we show the time in Adelaide
    // and what it'll be in UTC.
    echo "The time in Adelaide is: " . $time_in_Adelaide . PHP_EOL;
    echo "The UTC is: " . $utc_time;
?>

출력(다른 결과가 나타남):

The time in Adelaide is: 2022-07-28 07:56:31
The UTC is: 2022-07-27 22:26:31

date_default_timezone_set()을 사용하여 UTC 시간 가져오기

date_default_timezone_set() 함수는 시간대를 변경하는 데 사용됩니다. 매개변수를 UTC로 변경하여 UTC를 반환하는 데 사용할 수도 있습니다.

결과적으로 PHP 스크립트의 시간에 관계없이 항상 UTC로 표시됩니다.

<?php
    // Set the default time zone to UTC and all
    // date and time of the current PHP script will
    // be in UTC.
    date_default_timezone_set("UTC");

    // As usual, get the date, but this time, it'll
    // return the time in UTC. That's because this script
    // has its time zone set to UTC.
    $utc_time = date('Y-m-d H:i:s', time());
    echo "The UTC is: " . $utc_time;
?>

출력(다른 결과가 나타남):

The UTC is: 2022-07-27 22:36:02

DateTime 개체를 사용하여 UTC 시간 가져오기

DateTime 개체와 DateTimeZone 개체의 조합은 UTC를 반환할 수 있습니다. UTC를 반환하려면 DateTime의 첫 번째 및 두 번째 매개 변수를 nownew \DateTimeZone("UTC")로 설정한 다음 결과를 RFC 850 형식으로 표시할 수 있습니다.

예제 코드:

<?php
    // Get the UTC using the DateTime object.
    // Its first parameter should be the
    // string "now". And its second parameter should
    // be a new DateTimeZone object and its parameter
    // should be the string "UTC".
    $utc_time = new \DateTime("now", new \DateTimeZone("UTC"));

    // Format the date to show it's a UTC date
    // A sample output is: Wednesday, 27-Jul-22 15:02:41 UTC
    echo $utc_time->format(\DateTime::RFC850);
?>

출력(다른 결과가 나타남):

Wednesday, 27-Jul-22 23:00:42 UTC
Habdul Hazeez avatar Habdul Hazeez avatar

Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.

LinkedIn

관련 문장 - PHP Time