PHP / Zend自定义日期输入格式

时间:2010-05-24 15:57:18

标签: php zend-framework date

我正在使用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()出局了。

3 个答案:

答案 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