从 ZF 问题跟踪器看来,这是一个已知问题:
最近很多 ZF 用户提交了一个错误,即 Zend_Date 返回错误的年份,2009 而不是 2008。然而,这是预期的行为,而不是错误!
从常见问题解答:
在您的代码中使用自己的格式时,您可能会遇到例如 29.12.2009,但您预计会得到 29.12.2008 的情况。
有一年的差异:2009 年而不是 2008 年。您应该使用小写年份常数。看这个例子:
$date->toString('dd.MM.yyyy');
代替
$date->toString('dd.MM.YYYY');
从手册
请注意,默认的 ISO 格式与 PHP 的格式不同,如果您以前没有使用过这可能会很烦人。特别是 Year 和 Minute 的格式说明符通常不会以预期的方式使用。
对于 year 有两个可用的说明符,它们经常被弄错。ISO 年份的 Y 说明符和实际年份的 y 说明符。差异很小但很重要。Y 计算 ISO 年份,通常用于日历格式。例如,请参见 2007 年 12 月 31 日。实际年份是 2007 年,但它是 2008 年第 1 周第一周的第一天。因此,如果您使用“dd.MM.yyyy”,您将得到'31.December.2007' 但如果你使用'dd.MM.YYYY' 你会得到'31.December.2008'。如您所见,这不是错误,而是取决于使用的说明符的预期行为。
分钟差异不是那么大。ISO 使用说明符 m 表示分钟,不像 PHP 使用 i。因此,如果您的格式没有时间,请检查您是否使用了正确的说明符。