PHP - 문자열 시간대 형식을 오프셋 정수로 변환
-
02-01-2020 - |
문제
꽤 직설적 인:
PHP는 다음 형식으로 시간대를 반환합니다.
"America/Los_Angeles"
나는 그것을 다음과 같이 변환하고 싶습니다 :
-7
커스텀 함수로 차이를 계산해서 변환하는 코드를 많이 찾았네요..하지만 미니멀리스트로서 값을 즉시 얻을 수 있는 더 간단한 방법(아마도 날짜/시간 함수)이 없다는 것을 믿을 수 없습니다.이거 아는 사람 있어?
해결책
$dateTimeZone = new DateTimeZone("America/Los_Angeles");
$date = new DateTime(null, $dateTimeZone);
echo $dateTimeZone->getOffset($date)/60/60;
다른 팁
PHP는 다음의 표준 시간대를 사용합니다. IANA 시간대 데이터베이스.
"아메리카/로스엔젤레스"는 ~ 아니다 -7과 같습니다.-7은 "시간대"가 아닌 "시간대 오프셋"입니다."시간대 != 오프셋"을 읽어보세요. 시간대 태그 위키.
그것을 고려 "America/Los_Angeles"
이는 미국 태평양 표준시를 나타내며 태평양 일광 절약 시간(PDT) 동안에는 -7에 불과합니다.나머지 기간은 태평양 표준시(PST)로 -8입니다.
John의 답변에 제공된 코드는 시간대가 현재의 날짜와 시간.코드를 실행하는 시기에 따라 값이 변경된다는 점을 인식하세요.
또한 특정 순간에 특정 시간대에 대한 오프셋을 확인할 수 있지만 그 반대는 사실이 아니라는 점을 인식해야 합니다.너 할 수 없다 -7을 시간대로 처리하고 누군가가 태평양 일광 절약 시간제임을 알 수 있을 것으로 기대합니다.-7은 애리조나주가 연중 내내 사용하는 산지 표준시에도 적용된다는 점을 고려하세요.
제휴하지 않습니다 StackOverflow