2012-02-20 2 views
0

사용자가 "이번 주"(시간대에서) 만든 모든 항목을 가져 오는 응용 프로그램을 작성 중입니다. 내가 사용하는 UTC/GMT 시간으로 데이터베이스에있는 모든 항목의 시간을 저장 : 나는 그들의 시간대에서 "이번 주"를 가져 오기 위해 필요로 할 때PHP :이 시간대의 월요일을 UTC로 변환

gmdate('U') 

내 문제가 발생한다. 나는 계정에 시간대를 사용하기 전에 ...

$startWeek = strtotime('monday this week 00:00') 
$endWeek = strtotime('sunday this week 00:00') 

...이 두 변수 사이를 검색 한 SQL 문을 사용했습니다.

문제는이 두 변수가 서버 시간을 사용하기 때문에 서버가 시작하고 끝나는 주를 제공한다는 것입니다.

필요할 경우 쿠키로 사용자 시간대 (예 : 오스트레일리아/멜버른)에 액세스 할 수 있습니다.

요점, 쿠키에 저장된 시간대에서 요일의 시작과 끝을 타임 스탬프 형식으로 가져 오는 방법은 무엇입니까?

답변

0

나는 date_default_timezone_set 기능이 귀하의 요구 사항에 맞는 생각 :

http://www.php.net/manual/en/function.date-default-timezone-set.php

당신은 사용자의 시간대를 얻고 다음으로 함수를 호출 할 필요가있다. 시간대에서가는, 다음 코드는 작동합니다 : 당신이 중간 현재 PHP가 설치되어있는 경우

date_default_timezone_set('Melbourne/Australia'); 
+0

을 내가 (데이터베이스에서 결과를 가져 그래서 어느 포함 UTC 시간) 다음은 다음과 관련이 있습니다 ... ' date_default_timezone_set (get_cookie ('userTimezone'))); $ startWeek = gmdate ('U', strtotime ('월요일에 이번 주 00:00')); $ endWeek = gmdate ('U', strtotime ('sunday 이번 주 23:59'))); ' – Deminetix

0

가이 그것을 할 수 있습니다 :

$usersTimezone = new DateTimeZone($timezone); // e.g. "Australia/Melbourne" 
$time = new DateTime('monday this week 00:00', $usersTimezone); 

$serversTimezone = new DateTimeZone('Servers Timezone'); // e.g. "UTC" 
$time->setTimezone($serversTimezone); 

$sqlTime = $time->format('Y-m-d H:i:s'); 
관련 문제