zend yerel beni sinir yapıyor: yanlış datepresentation

2 Cevap php

First I had problems with getting date's into my db see here. Now I have problems with getting it into the database on the right format. This is my code:

public function editAction()
    {
        if($this->_request->getParam('id')){
            $id = $this->_request->getParam('id');
            $data = $this->_evtObj->selectOneRow($id);
            // initialize the form
            //var_dump($data);
            $form = new JS_Form_EventForm();

            $array = $data->toArray(); 
            //$locale = Zend_Registry::get('locale');
            $locale = new Zend_Locale();
            $date1 = new Zend_Date($locale);
            $date1->set($array[0]['evt_startdate']);
            $array[0]['evt_startdate'] = $date1->get();
            $array[0]['evt_enddate'] = date('%d-%m-%Y',(string)$array[0]['evt_enddate']);
            $form->populate($array[0]);
            $this->view->form =$form;
        }

Gördüğünüz gibi db tarihlerle formunu doldurur. Db tarih 2010-01-15 gibi kaydedilir. Eğer yukarıdaki örnekte gördüğünüz gibi ben iki şey denedim:

locale = new Zend_Locale();
$date1 = new Zend_Date($locale);
$date1->set($array[0]['evt_startdate']);
$array[0]['evt_startdate'] = $date1->get();

'1262300400 ': Bu gibi tarihi gösterir

ve:

 $array[0]['evt_enddate'] = date('%d-%m-%Y',(string)$array[0]['evt_enddate']);

'-% 01 -% 1970% 01': Bu gibi tarihi gösterir

Ben tarih gg-aa-yyyy gibi gösterilmesini istiyorum

Bu nasıl başa? Bütün bu tarih iş beni deli.

Ben ZF 1.9.6 çalıştırıyorum

herhangi bir fikrin?

2 Cevap

Böyle bir şey kullanarak öneririm

$date = new Zend_Date($array[0]['evt_startdate'],Zend_Date::DATES);
$array[0]['evt_startdate'] = $date1->toString('dd-MM-YYYY');

Documentation

Try date('d-m-Y', $array[0]['evt_enddate']) Also, the second param to date should be a timestamp. I do not know what is inside that array you use, but it certainly does not need to be typecasted to string. If you want to create timestamp from a formatted date, use strftime().

Eğer herhangi bir argüman olmadan get() kullanırsanız, zaman damgası döndürülür. Eğer Zend_Date kullanım getDate() yerine zaman ile tarih bölümünü almak istiyorsanız get(). Yani 00:00:00 ile zaman bir parçası ve tarih ile dönecektir. Sadece DATE_MEDIUM sabiti ile tarih bölümü kullanımını get() istiyorum. Sadece Zend_Date biçimlendirmek istiyorsanız, aşağıda Peter Lindqvist önerdiği cevap kullanabilirsiniz.

Opinion: Şahsen ben tamamen Zend_Date önlemek için öneririm. Ben PHP'nin DateTime ve DateTimeZone sınıflara göre kullanımı akward ve oldukça yavaş bir izlenim var. Parlar nerede çünkü ben, günümüzde sadece lokalize biçimlendirme için Zend_Date kullanın.