我必须比较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
我认为日期格式是对的,我错过了什么? 有人可以帮忙吗?
答案 0 :(得分:1)
您的日期格式字符串不正确。
根据以下文档,您希望它为d/M/Y H.i.s
:http://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);