2010-01-05 30 views
3

首先,我有問題與獲取日期到我的db see here。現在我遇到了以正確的格式將其存入數據庫的問題。 這是我的代碼:zend locale讓我很緊張:錯誤的datepresentation

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; 
     } 

正如你所看到的,它用從DB日期的形式。在數據庫中,日期保存爲2010-01-15。正如你可以在上面的例子中看到我嘗試了兩件事情:

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

這顯示例如日期:「1262300400」

和:

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

這顯示例如日期:' %01-%01-%20世紀70年代

我想要顯示像DD-MM-YYYY日期

如何應對無線這個?所有這個日期的業務讓我很生氣。

我正在運行zf 1.9.6

任何想法的?

回答

1

我建議使用這樣

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

Documentation

+0

$日期東西=新Zend_Date的運算($陣列[0] [ 'evt_startdate']地,Zend_Date :: DATES); \t \t \t $陣列[0] [ 'evt_startdate'] = $日期 - >的toString( 'DD-MM-YYYY'); 結果如下:00-01-2009 – sanders 2010-01-05 09:13:47

+0

天數錯誤。應該是小寫字母。 – 2010-01-05 09:15:09

+1

YYYY是ISO年份。 yyyy是真實的一年。 – smack0007 2010-01-05 10:28:33

1

嘗試date('d-m-Y', $array[0]['evt_enddate']) 此外,第二個參數迄今應該是一個時間戳。我不知道你使用的數組內部是什麼,但它當然不需要被串行化。如果您想從格式化日期創建時間戳,請使用strftime()。

如果使用get()而沒有任何參數,則返回時間戳。如果您想從Zend_Date獲取日期部分,請使用getDate()而不是get()。這會將時間部分設置爲00:00:00,並返回日期。如果您只希望日期部分使用get()和DATE_MEDIUM常量。如果您只想從Zend_Date格式化,請使用下面的Peter Lindqvist的建議答案。

意見:我個人建議完全避免Zend_Date。與PHP的本地DateTime和DateTimezone類相比,我覺得它使用起來很尷尬,而且速度很慢。我現在只使用Zend_Date進行本地化的格式化,因爲這是它發光的地方。