현재 (시스템) 시간대와 비교하여 PHP에서 UTC 오프셋을 가져 오는 가장 쉬운 방법은 무엇입니까?UTC PHP에서 오프셋
답변
date('Z');
반환 초 오프셋 UTC를 작동합니다.
$this_tz_str = date_default_timezone_get();
$this_tz = new DateTimeZone($this_tz_str);
$now = new DateTime("now", $this_tz);
$offset = $this_tz->getOffset($now);
안된하지만
유용합니다. –
date("Z")
은 사용자의 컴퓨터 시간대가 아닌 서버 시간대에 상대적인 UTC 오프셋을 반환합니다. 사용자의 시스템 시간대를 가져 오려면 javacript getTimezoneOffset()
함수를 사용하면 UTC 시간과 현지 시간의 시차를 분 단위로 반환 할 수 있습니다.
<script type="text/javascript">
d = new Date();
window.location.href = "page.php?offset=" + d.getTimezoneOffset();
</script>
그리고 당신의 PHP 코드를 보유하고 page.php
에
OP가 명시 적으로 요청되었습니다. * "현재 (시스템) 시간대와 관련이 있습니까?"* – Madbreaks
OP는 JS가 아닌 PHP 솔루션을 묻습니다. –
나는 오스카가 한 일을 약간 수정했다.
date_default_timezone_set('America/New_York');
$utc_offset = date('Z')/3600;
이렇게하면 내 표준 시간대 (EST)에서 UTC (시간) 단위로 오프셋이 설정됩니다.
$ utc_offset 값은 -4입니다.
에코 날짜 ('P'); // 출력됩니다 뭔가 +02 : 00 또는 -04 : 00
이 같은 자바 스크립트 date.getTimezoneOffset()
기능입니다 :
<?php
echo round(date('Z')/-60,2);
?>
[ Z ')'] (http://php.net/manual/en/function.date.php)는 * "시간대 오프셋 (초)"입니다. * * 빼기 부호는 "60"으로 나눕니다. not-by -60' 그러면 서버의 시간대 오프셋을 출력합니다. OP는 지역 사용자의 오프셋을이 가치와 비교하기를 원했습니다 (2008 년). –
@LouysPatriceBessette'getTimezoneOffset()'함수는 자바 스크립트에서이 값과 똑같습니다 (-180). –
그건 [JavaScript getTimezoneOffset()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset)에 해당합니다 ... 그리고 그것은 분 단위입니다. 초. PHP 날짜는 절대 값 반전을하지 않습니다. –
감사합니다. 불행히도 PHP에서는 date_default_timezone_set()을 호출해야합니다. 이를 GMT로 설정하면 데이터베이스의 날짜는 여전히 현지 시간이지만, 날짜 ('Z')는 0을 반환합니다. 서버의 시간대로 설정하면 포함 파일에서 서버의 GMT 오프셋을 하드 코딩 할 수 있습니다. 이 작업을 수행하는 데 직접적인 방법이 없다는 것은 놀라운 일입니다. 편집 : date_default_timezone_set (date_default_timezone_get()) 할 수있는 것을 발견했습니다. 어떻게 asinine! – Oscar
날짜 ('Z')는 GMT 오프셋을 초 단위로 반환합니다. – Dahomz
0을 반환합니다. – Adry