2011-03-11 2 views
1

소셜 네트워킹 유형 웹 사이트를 만들고 있습니다. 웹 사이트는 트래픽과 관련하여 훌륭하게 해내 고 있습니다. 사람들의 상태와 상호 작용에 대한 라이브 뉴스가있는 곳에 문제가 발생했습니다. 내가 여기 (조지아 주 애틀랜타)에서 무언가를 올리면 1 분 전에 게시 된 주들입니다. 호주에 사는 사람들은 16 시간 전에 게시되었다고 말합니다.사용자가 다른 시간대에있을 때 datetimes 표시를 처리하는 방법?

나는 램프 설정을 PHP 5와 함께 사용하고있다. JQuery 플러그인이 시간대를 사용하여 abbr의 모양을 예쁘게 만든다.

사용자 위치에 따라 PHP 시간대를 설정해야하는지, 위치에 따라 DB 시간대를 설정해야하는지 잘 모르겠습니다.

+0

PHP 서버와 MySQL 서버는 모두 EST 시간대에 설치해야합니다. 또한 데이터를 입력 할 때 datetime NOW()를 사용하고 있습니다. –

+1

일반적으로 UTC로 DB에 날짜를 저장 한 다음 코드에서 적절하게 변환하는 것이 가장 좋습니다. 소스 데이터에 고정 된 시간대를 설정하면 많은 이식성 문제가 해결됩니다 (예 : 다른 시간대의 다른 호스트로 이동해야하는 경우 모든 날짜/시간 필드를 업데이트해야 함). –

답변

5

나는 모든 날짜를 UTC와 같은 형태로 유지해야하며이를 기반으로 비교를 수행합니다. 날짜를 표시해야하는 경우 UTC에서 특정 사용자가 속한 시간대 (서버 또는 JS를 통해)로 변환하십시오.

0

timeago 플러그인은 UTC 시간 또는 브라우저 로컬 시간의 입력을 예상합니다. 아마도 UTC로 표시된 현지 시간을 timeago에 제공하고있을 것입니다. 다음은 오전 9시 25 분의 현지 시간을 가정 한 예입니다.

<script language="javascript"> 
jQuery(document).ready(function() {jQuery("abbr.timeago").timeago();}); 
</script> 

Correct UTC: <abbr class="timeago" title="2011-03-25T13:25:00Z">March 25, 2011</abbr> 
Correct Local: <abbr class="timeago" title="2011-03-25T09:25:00">March 25, 2011</abbr> 
Wrong (local time marked as UTC)<abbr class="timeago" title="2011-03-25T09:25:00Z">March 25, 2011</abbr> 

DB 시간대 또는 PHP를 변경하는 것에 대해 걱정하지 마십시오. Javascript에서 수행하십시오. PHP가 브라우저에 보내는 시간 문자열이 이미 UTC로 변환되어 있는지 확인합니다. 그렇다면 시간 걸기를 호출하기 전에 시간 표시에 'Z'접미사를 추가하십시오. UTC가 아닌 경우 'Z'접미사를 제거하십시오. 희망이 도움이됩니다.

관련 문제