Nice programing

UTC 날짜 / 시간 문자열을 시간대로

nicepro 2020. 12. 28. 22:34
반응형

UTC 날짜 / 시간 문자열을 시간대로


UTC 인 날짜 / 시간 문자열 (예 : 2011-01-01 15:00:00)을 America / New_York 또는 Europe / San_Marino와 같은 지정된 시간대 PHP 지원으로 어떻게 변환합니까?


PHP의 DateTime객체는 매우 유연합니다.

$UTC = new DateTimeZone("UTC");
$newTZ = new DateTimeZone("America/New_York");
$date = new DateTime( "2011-01-01 15:00:00", $UTC );
$date->setTimezone( $newTZ );
echo $date->format('Y-m-d H:i:s');

PHP의 DateTime객체는 매우 유연합니다.

사용자가 하나 이상의 시간대 옵션을 요청했기 때문에 일반으로 만들 수 있습니다.

일반 기능

function convertDateFromTimezone($date,$timezone,$timezone_to,$format){
 $date = new DateTime($date,new DateTimeZone($timezone));
 $date->setTimezone( new DateTimeZone($timezone_to) );
 return $date->format($format);
}

용법:

echo  convertDateFromTimezone('2011-04-21 13:14','UTC','America/New_York','Y-m-d H:i:s');

산출:

2011-04-21 09:14:00


UTC가 문자열에 포함되어 있지 않다고 가정하면 다음과 같습니다.

date_default_timezone_set('America/New_York');
$datestring = '2011-01-01 15:00:00';  //Pulled in from somewhere
$date = date('Y-m-d H:i:s T',strtotime($datestring . ' UTC'));
echo $date;  //Should get '2011-01-01 10:00:00 EST' or something like that

또는 DateTime 개체를 사용할 수 있습니다.


function _settimezone($time,$defaultzone,$newzone)
{
$date = new DateTime($time, new DateTimeZone($defaultzone));
$date->setTimezone(new DateTimeZone($newzone));
$result=$date->format('Y-m-d H:i:s');
return $result;
}

$defaultzone="UTC";
$newzone="America/New_York";
$time="2011-01-01 15:00:00";
$newtime=_settimezone($time,$defaultzone,$newzone);

모든 시간대에서 다른 시간대로 모든 타임 스탬프를 형식화하는 범용 정규화 기능입니다. 관계형 데이터베이스에 다른 시간대의 사용자 날짜 타임 스탬프를 저장하는 데 매우 유용합니다. 데이터베이스 비교를 위해 타임 스탬프를 UTC로 저장하고gmdate('Y-m-d H:i:s')

/**
 * Convert Datetime from any given olsonzone to other.
 * @return datetime in user specified format
 */

function datetimeconv($datetime, $from, $to)
{
    try {
        if ($from['localeFormat'] != 'Y-m-d H:i:s') {
            $datetime = DateTime::createFromFormat($from['localeFormat'], $datetime)->format('Y-m-d H:i:s');
        }
        $datetime = new DateTime($datetime, new DateTimeZone($from['olsonZone']));
        $datetime->setTimeZone(new DateTimeZone($to['olsonZone']));
        return $datetime->format($to['localeFormat']);
    } catch (\Exception $e) {
        return null;
    }
}

용법:

$from = ['localeFormat' => "d/m/Y H:i A", 'olsonZone' => 'Asia/Calcutta'];

$to = ['localeFormat' => "Y-m-d H:i:s", 'olsonZone' => 'UTC'];

datetimeconv("14/05/1986 10:45 PM", $from, $to); // returns "1986-05-14 17:15:00"

어때 :

$timezone = new DateTimeZone('UTC');
$date = new DateTime('2011-04-21 13:14', $timezone);
echo $date->format;

참조 URL : https://stackoverflow.com/questions/5746531/utc-date-time-string-to-timezone

반응형