반응형
표준 시간대에 대한 UTC 날짜/시간 문자열
UTC인 날짜/시간 문자열(예: 2011-01-01 15:00:00)을 America/New_York 또는 Europe/San_Marino와 같은 지정된 시간대 php 지원으로 변환하려면 어떻게 해야 합니까?
PHP의 객체는 매우 유연합니다.
$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의 객체는 매우 유연합니다.
사용자가 둘 이상의 표준 시간대 옵션을 요청했으므로 일반으로 만들 수 있습니다.
일반 함수
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
반응형
'source' 카테고리의 다른 글
Android:컨텐츠 URI에서 파일 URI를 가져오시겠습니까? (0) | 2023.08.30 |
---|---|
express.js - 단일 행의 여러 경로에 대한 단일 라우팅 핸들러 (0) | 2023.08.30 |
각 행에서 두 개의 열을 선택하여 값 집합을 매핑하는 중 (0) | 2023.08.30 |
리와 울에서 검은색 점 제거 (0) | 2023.08.30 |
처리기 취소.postdelayed 프로세스 (0) | 2023.08.30 |