2013-07-21 2 views
0

학습을 위해 조금 트위터 복제본을 만들고 있는데, 사용자가 시간대를 선택할 수있게 한 후에 전에 문제가 발생했습니다. 그들이 짹짹 울 때 특정 일이 잘못되었습니다.시간대가 맞지만 시간이 맞지 않습니다. - PHP MySQL

여기 내 코드의 조각입니다

/* current date/time whenever they send a tweet */ 

    $time = date('Y-m-d H:i:s'); 

/* Insert into db as `time` */ 


/* Time retrieved as $value['time'] & users timezone as $_SESSION['timezone'] */ 
/* Convert to users timezone */ 

    $users_timezone = new DateTimeZone($_SESSION['timezone']); 
    $date = new DateTime($value['time']); 
    $date->setTimeZone($users_timezone); 
    $new_date = $date->format('M j, o g:i a e'); 
    echo $new_date; 

그것은 11:32 오전 라 지역에 여기에 현재, 아직 변환 후에는 오후 6시 26분

내 기본 베를린에 보여주는를 오후 8시 33분는 현재 만 변환하기 전에이

사람이 나에게이 어떤 통찰력을 줄 수 오전 1시 보여줍니다? 이 일을 처음으로.

+0

'$ _SESSION [ 'timezone']'의 값은 무엇입니까? 또한, 당신은 실제로'VARCHAR'처럼 데이터베이스에 시간을 저장하고 있지 않습니까? 아마'DATETIME'으로 저장해야하며 UTC이어야합니다. –

답변

0

확인 시스템 시간

ssh를 통해 date를 실행하여 서버의 현재 시스템 시간을 확인하시기 바랍니다.

나는 PHP는 시스템 시간이 올바르지 않은 경우, 따라서 다음의 PHP 시간도 부정확 할 수있는 시스템에서 날짜를 얻을 생각합니다.

당신은 DataTime 클래스 내에서 구조 방법을 사용하는 $value['time']

확인합니다. 그 방법에 대한 문서가 있습니다.

http://www.php.net/manual/en/datetime.construct.php

$value['time']이 허용 형식으로되어 있는지 확인합니다. 이 작업을 쉽게 수행하는 방법은 strtotime 기능을 사용하는 것입니다. 이것은 유닉스 타임 스탬프를 $value['time']에서 만들 것이며 아마도 DateTime 클래스의 생성 메소드를 만족시킬 것입니다.

+0

방금했는데 정확한 시간을 표시하고 있습니다. 아직도 틀린 것을 계산할 수 없다! –

+0

'$ value [ 'time']'을 echo 할 수 있습니까? 그런 다음이 줄을'$ date = new DateTime ($ value [ 'time']);'$ date = new DateTime (strtotime ($ value [ 'time'])))'; – anglinb

관련 문제