我必须比较由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
我认为日期格式是正确的,我想念什么?谁能帮忙?
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);
您的日期格式字符串不合适。
您希望它是d/M/Y H.i.s
的每个文档:http://us2.php.net/manual/manual/en/function.date.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');
根据文档,zend_date构造函数的第二个参数必须是 string ,您是在数组中传递的。尝试
$date_old = new Zend_Date($config->authorization->date, 'dd/mmm/yyyy HH.mm.ss')
^^^^^---not an array