2010-06-24 4 views
0

getDate() 함수의 출력이 이상합니다. 시간 부분이없는 날짜를 반환하기로되어 있지만 시간 부분을 얻고 있습니다. 이 문제를 해결할 수있는 몇 가지 구성 옵션이 누락 되었습니까?Zend Date 괴괴 망측 한 - 구성 부재?

샘플 코드 :

date_default_timezone_set('America/New_York'); 
$date = new Zend_Date(array(
    'year' => 2010, 
    'month' => 3, 
    'day' => 29, 
)); 
echo $date->getIso() . PHP_EOL; 
echo $date->getDate()->getIso() . PHP_EOL; 

출력 :

2010-03-29T00:00:00-04:00 
2010-03-29T23:00:00-04:00 

답변

0

이것은 실제로 내 질문에 대한 답변이 아니지만 이것이 나의 해결 방법입니다.

class My_Date extends Zend_Date 
{ 
    public static function now($locale = null) 
    { 
     return new My_Date(time(), self::TIMESTAMP, $locale); 
    } 

    /** 
    * set to the first second of current day 
    */ 
    public function setDayStart() 
    { 
     return $this->setHour(0)->setMinute(0)->setSecond(0); 
    } 

    /** 
    * get the first second of current day 
    */ 
    public function getDayStart() 
    { 
     $clone = clone $this; 
     return $clone->setDayStart(); 
    } 
} 
0

흠,이 시도 :

echo $date->get(Zend_Date::DATE_FULL); 
+0

출력용으로 작동하지만 시간 부분을 제거한'Zend_Date' 객체는 반환하지 않습니다. – Sonny

+0

: getDate() 메소드는 지역화 된 형식으로 날짜가 포함 된 문자열을 구문 분석합니다. 결과는 날짜의 각 부분에 대해 잘 정의 된 키를 사용하여 구조화 된 배열로 반환됩니다. – opHASnoNAME

+0

당신은'Zend_Locale_Format :: getDate()'를 참조하고 있습니다. 'Zend_Date'의'getDate()'함수는 다음과 같이 문서화되어 있습니다 :'$ this의 복제본을 반환하고 시간 부분은 00 : 00 : 00으로 설정합니다 .' – Sonny

0
+0

내 질문은 날짜 상수가 아닙니다 – Sonny

+1

어떤 버전입니까? 당신에? http://zendframework.com/issues/browse/ZF-4490을 참조하십시오. – Ashley

+0

1.10.5에 있습니다. 그 버그에 대한 마지막 코멘트를 보면 다른 사람이 나와 같은 행동을하고있는 것입니다. 저는 그 의견에 대한 답이 없기 때문에 우리 모두가 똑같은 일을 잘못하고 있는지 확실하지 않았습니다. – Sonny

1

젠드 날짜의 getDate 방법은 오해하기 쉬운 다음과 같이 나는 Zend_Date 클래스를 확장했다. 출력은 다른 getDate 출력과 비교할 때를 제외하고는 실제로 사용되지 않으며 두 날짜가 달력 날짜와 비교하여 어떻게 다른지를 볼 수 있습니다. 이것을 "달력 날짜 해시 함수"라고 생각하십시오.

예 (양호) :이 두 날짜는 같은 날짜에 있습니까?

$date1->getDate()->equals($date2->getDate()); // works as expected 

예 (나쁜) :

echo $date1->getDate(); // is meaningless 
echo $date1->getCalendarDateHash(); // just as this would be 
$date1 = $date1->getDate(); // and don't store this meaningless value 

당신은 00:00:00으로 시간 부분을 설정하는 다른 곳에서 볼을 찾고 있다면.

+0

왜 그런 식으로 행동하는지 알고 있습니다. 더 명확하게 문서화되어야합니다. – Sonny

관련 문제