PHP / Zend özel tarih giriş biçimleri

3 Cevap php

Ben PHP ve Zend kullanarak benim takım diğer geliştiriciler için bir kütüphane bileşeni oluşturma. Bu bileşen, girdi olarak bir tarih (dize) ve bunu bu tarih biçimini anlatan başka bir dize almak mümkün olmalıdır. Zend belgeler ve örnekler bakarak, ben bir çözüm buldum sanıyordum -

$dateObject = Zend_Date('13.04.2006', array('date_format' => 'dd.MM.yyyy'));

Bu çizgi, ancak bir hata atar - tanımsız bir işlevin diyoruz.

Peki yerine bu çalıştı -

$dt = Zend_Locale_Format::getDate('13.04.2006', array('date_format' => 'dd.MM.yyyy'));

Bu iş bitmiş olur, ama girilen bir tarihi geçerli değil ise bir hata atar. Dokümanlar geçerliliğini kontrol etmek ısdate () işlevini kullanabilirsiniz gibi görünmesi -

Zend_Date::isDate('13.04.2006', array('date_format' => 'dd.MM.yyyy'))

ama bu çizgi her zaman false döndürür.

Yani benim sorular -

Ben bu konuda doğru yolu gidiyorum? Değilse, Zend veya düz PHP ile bu işlemek için daha iyi bir yolu var mı?

Ben Zend_Locale_Format :: getDate kullanırsanız (), bir yerel yerde ayarlamak ve arama sonuçlarını değiştirme hakkında endişelenmenize gerek var?

Ben btw ... yani 5.3 + fonksiyonlar, pencereler üzerinde PHP 5.2.6 kilitli & ediyorum strptime () dışında.

3 Cevap

this mesaja bir göz atın. Belki yardımcı olacaktır.

Sen Zend_Date sabitleri yerine dizeleri kullanarak denemek isteyebilirsiniz. Docs bazı tutarsızlık var gibi bu diyorum nedeni görünüyor:

MM     Month, two digit                   Zend_Date::MONTH       02
MMMM   Month, localized, complete         Zend_Date::MONTH_NAME  February

ve daha sonra da:

So, if you are using 'dd.MM.yyyy' you will get '31.December.2007' but if you use 'dd.MM.YYYY' you will get '31.December.2008'

MM bir dize gösteren gösterir? Yani tarih bu biçimi verilen doğrulamak olmaz. Eğer bir biçime olmadan ısdate denediniz mi?

Bunu yaparak bu soruna var:

try
{
    $myDate = new Zend_Date($date, $format, $locale);
}
catch (Zend_Date_Exception $e)
{
    $myDate = new Zend_Date::now();
}

$ DateObject = Zend_Date ('13 .04.2006 ', array (' DATE_FORMAT '=>' dd.MM.yyyy '));

hiçbir fonksiyonu olduğu için bir hata "tanımsız işlev" atar. buna göre manuel Zend_Date bir yapıcı ve biçim dizesi ile bir nesne bir dizide verilmez. Eğer bu gibi yazmak zorunda

$ DateObject = new Zend_Date ('13 .04.2006 ',' dd.MM.yyyy ');

ve her şey serin.

ciao ulf