我试图通过使用toString('dd mmm YYY')函数将日期转换为字符串。但是在这里,这行不通。
下面是我的代码: $date_start = new Zend_Date(strtotime($this->startdate));
echo($date_start);
结果是:31 Dec 2012 00:00:00
$date_input = $date_start->toString('dd MMMM YYY');
echo($date_input);
结果是:31 December 2013
我应该怎样做才能获得2012年12月31日?
这是这里描述的已知问题:http://framework.zend.com/issues/browse/ZF-5297
请注意,默认的ISO格式与PHP的格式不同,如果您以前没有使用过,可能会感到恼火。特别是Year和Minute的格式说明符经常没有按预期的方式使用。
对于year,有两个可用的说明符,这两个说明符经常出错。ISO年份的Y说明符和实际年份的Y说明符。差异虽小,但意义重大。Y计算ISO年份,通常用于日历格式。参见示例31。2007年12月。实际年份是2007,但是是2008年第1周第一周的第一天。所以,如果你用的是'dd.MM。你会得到12月31日。但如果你用"dd.MM. 2007"。YYYY'你会得到'31 december .2008'。正如你所看到的,这不是bug,而是一种预期的行为,取决于所使用的说明符。
使用";yyy
";而不是"YYY
"。
使用yyy代替yyy。
YYY是ISO-8601日期,与日历日期不同。
http://framework.zend.com/manual/1.12/en/zend.date.constants.html