PHP 시간 대별 기능 구현 방법 적용

PHP 에서 시간 대 를 뛰 어 넘 는 응용 을 실현 하려 면 서로 다른 시간 대 에 로그 인 한 사용 자 는 자신의 시간 대 를 봐 야 하 는 동시에 시간 대 전환 도 할 수 있어 야 한다.
시스템 에 저 장 된 모든 시간 은 GMT(UTC)시간 이 고 사용자 가 로그 인 할 때 사용자 가 있 는 시간 대 에 따라 대응 하 는 디 스 플레이 를 하 는 것 이 사고방식 이다.
PHP 의 시간 함수 사용 에 대해 서 는 다음 을 참고 하 십시오.PHP 시간 함수 사용 설명PHP 의 시간 대 설정 방법 부터 알 아 보 겠 습 니 다.PHP 에서 설정 하 는 방법 은 비교적 유연 하고 다양 합 니 다.php.ini 에서 date.timezone 속성 을 설정 할 수 있 고 코드 를 통 해 호출ini_set(‘date.timezone', ‘')할 수 있 으 며 함수date_default_timezone_set()를 사용 하거나 htaccess 파일 에서 설정 할 수 있 습 니 다.
서버 의 기본 시간 대 는 우리 가 원 하 는 시간 대 와 맞지 않 고 전체 시간 대 설정 을 수정 할 수 있 는 권한 이 없 으 면 코드 를 사용 할 수 밖 에 없습니다.
PHP 는 또한 편리 한 함 수 를 제공 합 니 다.gmdate()서버 의 시간 대 설정 에 관심 을 가지 지 않 고 항상 GMT 시간 을 얻 을 수 있 습 니 다.제 생각 은 바로 이 함수 에 기반 한 것 입 니 다.
제 프로젝트 에 서 는 Codeigniter 라 는 프레임 워 크 를 사 용 했 습 니 다.프레임 워 크 에 있 는 date 라 는 helper 는 몇 가지 편리 한 함 수 를 제공 하여 응용 프로그램의 다 중 시간 대 상황 을 처리 할 수 있 습 니 다.
그 중에서now() 시종 gmt 의 현재 시간 을 되 돌려 줍 니 다.local_to_gmt() 로 컬 시간 을 gmt 시간 으로 변환 할 수 있 습 니 다.gmt_to_local() gmt 시간 을 로 컬 시간 으로 변환 할 수 있 습 니 다.
전형 적 인 응용 장면 을 고려 하 다.
사용자 가 로그 인 한 후 현재 시간 을 표시 해 야 합 니 다.이것 은 우리 가now()표준 gmt 시간 을 얻 은 다음 에gmt_to_local()함 수 를 사용 하여 사용자 가 있 는 시간 대 로 전환 할 수 있 는 시간 입 니 다.
사용 자 는 시간 을 발표 해 야 합 니 다.사용자 가'2010-07-10 18:30:00'의 시간 을 발 표 했 습 니 다.우 리 는 데이터 베 이 스 를 직접 저장 할 수 없습니다.반드시local_to_gmt() 전환 기준의 gmt 시간 을 이용 하여 데이터 베 이 스 를 저장 해 야 전체 시스템 의 시간 이 일치 하도록 보장 할 수 있 습 니 다.
이 두 함수 의 세부 사항 은 사실 모두 시간 대 에 따라 상응하는 연산 을 해서 얻 은 것 이다.계산 할 때 도 여름 캠프 를 고려 할 수 있 지만 해당 시간 대 여름 캠프 의 시작 과 끝 시간 은 스스로 지 켜 야 합 니 다.
codeigniter 에 서 는 비교적 완전한 시간 대 목록 을 제공 합 니 다.timezone_menu() 시간 대 드 롭 다운 목록 을 표시 할 수 있 습 니 다.그러나 이 목록 의 시간 대 는 PHP 가 가 져 온 시간 대 에 완전히 대응 하지 못 합 니 다.이것 은 PHP 자체 의 문제 입 니 다.아래 의 편지 수 를 통 해 입력 한 시간 대 마다 해당 하 는 시간 대 문 자 를 표시 할 수 있 습 니 다.

if( ! function_exists("tz_offset_to_name") ) 
{ 
  /* Takes a GMT offset (in hours) and returns a timezone name */ 
  function tz_offset_to_name($offset) 
  { 
      $offset *= 3600; // convert hour offset to seconds 
      $abbrarray = timezone_abbreviations_list(); 
      foreach ($abbrarray as $abbr) 
      { 
          foreach ($abbr as $city) 
          { 
              if ($city['offset'] == $offset) 
              { 
                  return $city['timezone_id']; 
              } 
          } 
      } 
      return FALSE; 
  } 
}
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.더 많은 내용 을 알 고 싶다 면 아래 링크 를 보 세 요.

좋은 웹페이지 즐겨찾기