Php zend locale让我很紧张:错误的日期表示

Php zend locale让我很紧张:错误的日期表示,php,zend-framework,Php,Zend Framework,首先,我在将日期输入数据库时遇到问题。现在,我无法以正确的格式将其输入数据库。 这是我的代码: public function editAction() { if($this->_request->getParam('id')){ $id = $this->_request->getParam('id'); $data = $this->_evtObj->selectOneRow($id)

首先,我在将日期输入数据库时遇到问题。现在,我无法以正确的格式将其输入数据库。 这是我的代码:

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;
        }
如您所见,它使用数据库中的日期填充表单。在数据库中,日期保存为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”

以及:

这显示的日期如下:'%01-%01-%1970'

我希望日期显示为dd-mm-yyy

如何应对?所有这些约会的事都让我抓狂

我正在运行ZF1.9.6

有什么想法吗

试试
date('d-m-Y',$array[0]['evt\u enddate'])
此外,到目前为止的第二个参数应该是时间戳。我不知道您使用的数组中有什么,但它肯定不需要类型转换为字符串。如果要从格式化日期创建时间戳,请使用strftime()

如果使用不带任何参数的
get()
,将返回时间戳。如果您想从Zend_date获取带有时间的日期部分,请使用
getDate()
而不是
get()
。这会将时间部分设置为00:00:00,并将其与日期一起返回。如果只需要日期部分,请使用带有日期常数的
get()
。如果您只想从Zend_Date开始格式化,请使用下面Peter Lindqvist建议的答案


意见:我个人建议完全避免Zend_约会。我觉得它使用起来很方便,与PHP的原生DateTime和DateTimezone类相比速度非常慢。我现在只在本地化格式中使用Zend_Date,因为这正是它的亮点。

我建议使用类似的格式

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

$date=new Zend_date($array[0]['evt_startdate',Zend_date::DATES);$array[0]['evt_startdate']=$date->toString('DD-MM-YYYY');这导致:00-01-2009YYYY是ISO年。yyyy是真正的一年。
$date = new Zend_Date($array[0]['evt_startdate'],Zend_Date::DATES);
$array[0]['evt_startdate'] = $date1->toString('dd-MM-YYYY');