문제

꽤 직설적 인:

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은 애리조나주가 연중 내내 사용하는 산지 표준시에도 적용된다는 점을 고려하세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top