2017-11-23 1 views
1

-06 : 00 대신 -6으로 표시되는 표준 시간대 형식을 얻으려고하고 있지만이를 이해할 수는 없습니다.콜론이없는 표준 시간대 형식

내 현재 코드는 (I 중부 시간 오전 때문에) 나는 ...이 다음 사용하여 변환하려고 SO

-21600 같은 형식을 출력

$time_offset_get = new \DateTime('now', new DateTimeZone(America/Chicago)); 
$conn_timezone_offset = $time_offset_get->format('P'); 

그러나 물론

,이 ($ conn_timezone_offset) -06 : 00을 제공합니다. 이 작업을 올바르게 수행 할 다른 형식 코드가 있습니까? 아니면이 오류를 모두 잘못하고 있습니까?

전반적으로 미국/시카고 또는 3 자리 숫자 시간대 코드와 같은 시간대 오프셋 이름을 PHP를 사용하여 콜론없이 숫자 오프셋으로 변환하려고합니다.

+0

에 의해'미국/Chicago' * *이 숫자로 표시 할 수 없습니다 값을 분할, 시간 오프셋을 얻으려면, 때로는입니다 - 5. [Timezone tag wiki] (https://stackoverflow.com/tags/timezone/info), 특히 "Time Zone! = Offset"부분을 읽어보십시오. –

+0

나는 이것을 알고있다 ... 나는 일광 절약 여부에 따라 더하거나 뺄 것 인 추가 설정이있다. 나는 단지 초기 숫자를 숫자로 나타 내기 위해 노력하고있다. – user2284703

+0

일광 절약 시간제는 다른 시간대에서 상당히 다르며 동일한 시간대 내에서도 다른 시간대에 기록됩니다. 시간대를 숫자가 아닌 식별자로 유지하는 것이 중요합니다. –

답변

1

사용 DateTime::getOffset

초 실패에 성공 FALSE에 UTC에서 오프셋 시간대를 돌려줍니다. 때로는 -6 때문에

, 단순히 3600

$now = new \DateTime('now', new DateTimeZone('America/Chicago')); 
$offset = $now->getOffset(); 
if ($offset !== false) { 
    $offset = round($offset/3600); 
} else { 
    // the error handling here 
} 
+0

감사합니다! 그게 내가 필요한 것입니다. – user2284703

+0

당신은 @ user2284703을 환영합니다. – camelsWriteInCamelCase