首先,我遇到了将日期记入我的数据库see here的问题。现在我遇到了以正确格式进入数据库的问题。 这是我的代码:
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-%1970'
我希望日期显示为dd-mm-yyyy
如何处理?所有这些日期业务让我很生气。
我正在运行zf 1.9.6
任何想法?
答案 0 :(得分: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进行本地化格式化,因为它就是它闪耀的地方。
答案 1 :(得分:1)
我建议使用类似的东西
$date = new Zend_Date($array[0]['evt_startdate'],Zend_Date::DATES);
$array[0]['evt_startdate'] = $date1->toString('dd-MM-YYYY');