2009-06-16 3 views
6

Zend_Date를 사용하여 날짜를 표시하는 응용 프로그램이 있습니다. Zend_Date 인스턴스는 MySQL의 datetime 데이터, 사용자 입력 및 현재 날짜를 사용하여 생성됩니다.Zend_Date로 날짜와 시간대 다루기

사용자가 현지 시간대를 지정하고 모든 날짜가 현지 시간으로 표시되도록하고 싶습니다.

$date = '2009-01-01 10:30:00'; 

$date = new Zend_Date($date, Zend_Date::ISO_8601); 

echo $date->get(Zend_Date::TIME_MEDIUM); //10:30:00 

$date->setTimezone('Australia/ACT'); 

echo $date->get(Zend_Date::TIME_MEDIUM); //21:30:00 

이 작동하지만, 모든 일에 setTimezone 호출을 필요 내 코드는 다음과 같이 작동하는 순간

. 시간대를 관리하는 더 쉬운 방법이 있습니까?

또한 MySQL에서 조정 된 데이터를 반환하기 위해 MySQL에 time_zone SET을 사용하는 방법을 살펴 보았습니다. 그렇다면 PHP 스크립트 내에서 만들어진 시간대를 조정하기 만하면됩니다.

경험이있는 경우이 문제를 해결하는 가장 좋은 방법을 듣고 싶습니다.

감사

답변

7

는 내가 PHP 시간대를 설정하면 모든 후속 Zend_Date 인스턴스에 대한 기본을 설정해야한다고 생각합니다. Zend_Date section in the Zend Framework Reference Guide에서

date_default_timezone_set('Europe/Vienna'); 

: 예를 들어

PHP에서, 우리는 사용자의 기대에 따라 기본 시간대를 설정하여 특정 사용자에 대한 작업을 모든 날짜와 시간 관련 기능을 조정할 수 있습니다. Zend_Date 인스턴스를 생성하면 해당 시간대가 자동으로 현재 기본 시간대가됩니다!

+2

감사합니다. 가장 좋은 방법은 UTC를 기본값으로 설정하고 UTC datetime을 내부적으로 사용하며 setTimezone을 사용하여 시간대 별 현지 시간을 생성하는 것입니다. –

1

나는 당신이 Zend_Locale을 사용할 수 있다고 생각한다. 그것에 대해 몇 가지 문서를 읽고 꽤 잘 작동 할 수있을 것이라고 확신한다. 반면, Zend_Cache 및 Zend_Locale/Zend_Date를 사용하면 속도가 상당히 향상됩니다. 젠드 프레임 워크 문서에도 사용 예제가 있습니다.