2008-10-11 9 views

답변

59
date('Z'); 

반환 초 오프셋 UTC를 작동합니다.

+1

감사합니다. 불행히도 PHP에서는 date_default_timezone_set()을 호출해야합니다. 이를 GMT로 설정하면 데이터베이스의 날짜는 여전히 현지 시간이지만, 날짜 ('Z')는 0을 반환합니다. 서버의 시간대로 설정하면 포함 파일에서 서버의 GMT 오프셋을 하드 코딩 할 수 있습니다. 이 작업을 수행하는 데 직접적인 방법이 없다는 것은 놀라운 일입니다. 편집 : date_default_timezone_set (date_default_timezone_get()) 할 수있는 것을 발견했습니다. 어떻게 asinine! – Oscar

+0

날짜 ('Z')는 GMT 오프셋을 초 단위로 반환합니다. – Dahomz

+0

0을 반환합니다. – Adry

16

timezone_offset_get()

$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); 

안된하지만

+0

유용합니다. –

-2

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

, 당신은 당신이 그 오프셋 값을 원하는대로 할 수 있습니다. 또는 다른 페이지로 리디렉션하는 대신 필요에 따라 Ajax를 통해 오프셋 값을 PHP 스크립트로 보낼 수 있습니다.

+1

OP가 명시 적으로 요청되었습니다. * "현재 (시스템) 시간대와 관련이 있습니까?"* – Madbreaks

+1

OP는 JS가 아닌 PHP 솔루션을 묻습니다. –

10

나는 오스카가 한 일을 약간 수정했다.

date_default_timezone_set('America/New_York'); 
$utc_offset = date('Z')/3600; 

이렇게하면 내 표준 시간대 (EST)에서 UTC (시간) 단위로 오프셋이 설정됩니다.

$ utc_offset 값은 -4입니다.

11

에코 날짜 ('P'); // 출력됩니다 뭔가 +02 : 00 또는 -04 : 00

1

이 같은 자바 스크립트 date.getTimezoneOffset() 기능입니다 :

당신이 PHP 5에서 날짜 시간 클래스를 사용하지만 아니에요 경우
<?php 
echo round(date('Z')/-60,2); 
?> 
+0

[ Z ')'] (http://php.net/manual/en/function.date.php)는 * "시간대 오프셋 (초)"입니다. * * 빼기 부호는 "60"으로 나눕니다. not-by -60' 그러면 서버의 시간대 오프셋을 출력합니다. OP는 지역 사용자의 오프셋을이 가치와 비교하기를 원했습니다 (2008 년). –

+0

@LouysPatriceBessette'getTimezoneOffset()'함수는 자바 스크립트에서이 값과 똑같습니다 (-180). –

+0

그건 [JavaScript getTimezoneOffset()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset)에 해당합니다 ... 그리고 그것은 분 단위입니다. 초. PHP 날짜는 절대 값 반전을하지 않습니다. –