未知日期格式Zend日期

时间:2014-01-30 14:29:56

标签: php zend-framework date-format

我必须比较zend对象Zend_Date生成的两个日期。一个作为字符串存储在配置文件中。为了比较两个日期,我必须从配置文件中读取已经存在的日期,然后将其与Zend_Date::now()进行比较。代码如下:

 $config = new Zend_Config_Ini(APPLICATION_PATH.'/configs/oauth2.ini', 'authorization');
 $date = Zend_Date::now();
 $date_old =new Zend_Date($config->authorization->date, array('date_format'=>'dd/mmm/yyyy HH.mm.ss'));
 $date_old->add($config->authorization->timelapse, $date_old::SECONDS);
 if ($date->isLater($date_old)) {
    //Do what you have to do
 }

我收到的错误消息是:

 Message: Unknown dateformat type 'array'. Format 'dd/MMM/yyyy HH.mm.ss' must be a valid ISO or PHP date format string.

我给Zend_Date对象的字符串是:

 30/gen/2014 13.27.22

我认为日期格式是对的,我错过了什么? 有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

您的日期格式字符串不正确。

根据以下文档,您希望它为d/M/Y H.i.shttp://us2.php.net/manual/en/function.date.php

d - is the two digit day
M - the three letter abbreviation of the month
Y - the four digit year
H - 24-hour clock with leading zeros
i - minutes with leading zeros
s - seconds

您无需重复字符即可指定数字。

所以这一行:

$date_old =new Zend_Date($config->authorization->date, array('date_format'=>'dd/mmm/yyyy  H.mm.ss'));

变为

$date_old =new Zend_Date($config->authorization->date, 'd/M/Y H.i.s');

答案 1 :(得分:1)

作为per the docs,Zend_Date构造函数的第二个参数必须是 STRING ,您传入一个数组。尝试

$date_old = new Zend_Date($config->authorization->date, 'dd/mmm/yyyy HH.mm.ss')
                                                        ^^^^^---not an array

答案 2 :(得分:1)

Zend_Date构造函数的第二个参数是“part”字符串,但是你传递一个数组。所以这一行应该是:

$date_old = new Zend_Date($config->authorization->date, 'd/M/Y H.i.s'));

此外,您的代码中还有另一个错误 - $ date_old :: SECONDS不正确。尝试:

$date_old->add($config->authorization->timelapse, Zend_Date::SECOND);