Php 在数据库中保存日期和时间格式时遇到问题

Php 在数据库中保存日期和时间格式时遇到问题,php,zend-framework,zend-validate,Php,Zend Framework,Zend Validate,保存日期和时间值时遇到问题。我尝试了不同的格式,这里是实际的尝试 我的表单中的验证程序: $datum=$this->CreateElement('text','datum') ->setAttrib('size', '10') ->addValidator(New Zend_Validate_Date('MM-DD-YYYY')); $zeit=$this->CreateElement('

保存日期和时间值时遇到问题。我尝试了不同的格式,这里是实际的尝试

我的表单中的验证程序:

 $datum=$this->CreateElement('text','datum')
                    ->setAttrib('size', '10')
                    ->addValidator(New Zend_Validate_Date('MM-DD-YYYY'));
$zeit=$this->CreateElement('text','zeit')
                    ->setAttrib('size', '10')

                    ->addValidator(new Zend_Validate_Date(array('format' => 'H:i:s')));
我的控制器addAction的片段

if ($this->getRequest()->isPost()) {
    $formData = $this->getRequest()->getPost();
    if ($form->isValid($formData)) {
        $logenr = $this->_getParam('kopfnr', 0);
        $kopfnr = $logenr;
        $dat= $form->getValue('datum');
        $zeit = $form->getValue('zeit');
        $thema = $form->getValue('thema');
        $aktermine = new Application_Model_DbTable_Aktermine();
        $aktermine->addTermine( $kopfnr, $dat, $zeit, $thema);
还有,我的数据库类中的add函数:

public function addTermine($kopfnr, $datum, $zeit, $thema)
    {
        $data = array(
            'kopfnr' => $kopfnr,
            'datum' => $datum,
            'zeit' => $zeit,
            'thema' => $thema,                  
        );
        $this->insert($data);
    }
我正在WAMP安装中使用mySQL数据库

我的错误在哪里?作为我想说的一句话,我得到了一个新记录,“thema”的值和键被正确保存,所以我想它一定是某种格式的东西

编辑:我得到一条新记录,但日期和时间字段为空。我没有错误

新增:我在控制器中添加了一个调试测试,以查看日期值的结果,以下是答案:

字符串“01-04-2016”(长度=10)
(我输入了2016年4月1日)

通过阅读您的评论,我了解到您有两个问题。第一个是将日期放入表中,第二个是让用户使用正常的日期格式(dd/mm/yyyy)

将用户输入重新格式化后再放入数据库时,第一个问题就解决了。您可以将以下行添加到
$form->isValid($formData)
部分:

$dat = (new DateTime($form->getValue('datum')))->format('Y-m-d'); 

此oneliner将日期从“dd-mm-yyyy”转换为“yyy-mm-dd”。

谢谢,在建议调试后,我更改了日期格式如下:
$test1=date('Y/m/d',strotime($dat))


现在它工作了

啊哈,如果我尝试使用phpmyadmin接受的格式来确定日期,那么它就会正常工作:2015-04-15。有没有一个简单的方法来解决这个日期验证程序的问题?你的问题到底是什么?您是否有错误消息或例外结果?请添加关于哪些不起作用的更多信息(在您的问题中,使用
edit
)您是否尝试将新的Zend_Validate_Date('MM-DD-YYYY')更改为Zend_Validate_Date('YYYY-MM-DD')?是的,我已经尝试过了,但我希望用户使用另一种格式,例如DD-MM-YYYYYY。我尝试了两种更改,在我的formclass中,我这样更改了验证器:->addValidator(newZend_Validate_Date('DD-MM-YYYY');我在控制器中按照你的建议改变了。但它不起作用。它只有在我有mySQL这样的验证器时才有效:YYYY-MM-DD.Hi@pia-sophie,所以表单接受用户提供的DD-MM-YYYY格式,但在进入数据库之前仍然没有转换?您能否使用
print\r
打印
$data
对象并将其放入您的问题中?