我正在使用PHP和Zend为团队中的其他开发人员创建一个库组件。该组件需要能够将日期(字符串)和另一个字符串作为输入,并告诉它该日期的格式。通过Zend文档和示例,我认为我找到了解决方案 -
$dateObject = Zend_Date('13.04.2006', array('date_format' => 'dd.MM.yyyy'));
然而,此行会抛出错误 - 调用未定义的函数。
所以我尝试了这个 -
$dt = Zend_Locale_Format::getDate('13.04.2006', array('date_format' => 'dd.MM.yyyy'));
这可以完成工作,但如果输入的日期无效,则会引发错误。文档使您看起来可以使用isDate()函数来检查有效性 -
Zend_Date::isDate('13.04.2006', array('date_format' => 'dd.MM.yyyy'))
但此行始终返回false。
所以我的问题 -
我是以正确的方式来做这件事的吗?如果没有,有没有更好的方法通过Zend或直接PHP处理这个?
如果我使用Zend_Locale_Format :: getDate(),我是否需要担心在别处设置区域设置并更改调用结果?
我在windows上锁定了PHP 5.2.6,顺便说一句...所以5.3+功能& strptime()出局了。
答案 0 :(得分:1)
查看this帖子。也许它会有所帮助。
答案 1 :(得分:0)
您可能想尝试使用Zend_Date常量而不是字符串。我说这个的原因看起来在文档中有一些不一致的地方:
MM Month, two digit Zend_Date::MONTH 02 MMMM Month, localized, complete Zend_Date::MONTH_NAME February
然后是:
所以,如果您正在使用'dd.MM.yyyy',那么 会得到'31。 12月。2007'但是如果你 使用'dd.MM.YYYY'你会得到的 '31 .December.2008'
显示MM显示字符串?因此,鉴于该格式,您的日期不会验证。您是否尝试过没有格式的isDate?
通过这样做,我解决了这个问题:
try
{
$myDate = new Zend_Date($date, $format, $locale);
}
catch (Zend_Date_Exception $e)
{
$myDate = new Zend_Date::now();
}
答案 2 :(得分:0)
$ dateObject = Zend_Date('13 .04.2006',array('date_format'=>'dd.MM.yyyy'));
抛出错误“未定义的函数”,因为它不是函数。因此,手册Zend_Date是一个带有构造函数的Object,格式字符串没有在数组中给出。你必须像这样写
$ dateObject = new Zend_Date('13 .04.2006','dd.MM.yyyy');
一切都很酷。
侨 ULF