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');