在php中转换日期,toString函数不起作用

在php中转换日期,toString函数不起作用,php,zend-framework,date,tostring,Php,Zend Framework,Date,Tostring,我试图使用toString'dd MMMM YYY'函数将日期转换为字符串。 但在这里,这不起作用 这是我的密码: $date_start = new Zend_Date(strtotime($this->startdate)); echo($date_start); 结果是:2012年12月31日00:00:00 $date_input = $date_start->toString('dd MMMM YYY'); echo($date_inpu

我试图使用toString'dd MMMM YYY'函数将日期转换为字符串。 但在这里,这不起作用

这是我的密码:

    $date_start = new Zend_Date(strtotime($this->startdate));
    echo($date_start); 
结果是:2012年12月31日00:00:00

    $date_input = $date_start->toString('dd MMMM YYY');
    echo($date_input);
结果是:2013年12月31日


要获得2012年12月31日,我必须做些什么?

使用yyy而不是yyy

YYY是ISO-8601日期,与日历日期不同


使用yyy而不是yyy

YYY是ISO-8601日期,与日历日期不同


这是此处描述的已知问题:

请注意,默认的ISO格式不同于PHP的格式,如果您以前没有使用过这种格式,那么PHP的格式可能会令人恼火。特别是年和分钟的格式说明符通常没有按预期的方式使用

对于年份,有两个可用的说明符,它们经常出错。ISO年份的Y说明符和实际年份的Y说明符。这种差异虽然小,但意义重大。Y计算ISO年,这通常用于日历格式。参见示例31。2007年12月。真正的年份是2007年,但它是2008年第一周第一周的第一天。因此,如果您使用'dd.MM.yyy',您将获得'2007年12月31日',但如果您使用'dd.MM.yyy',您将获得'2008年12月31日'。正如您所看到的,这不是bug,而是根据所使用的说明符的预期行为


使用yyy而不是yyy。

这是此处描述的已知问题:

请注意,默认的ISO格式不同于PHP的格式,如果您以前没有使用过这种格式,那么PHP的格式可能会令人恼火。特别是年和分钟的格式说明符通常没有按预期的方式使用

对于年份,有两个可用的说明符,它们经常出错。ISO年份的Y说明符和实际年份的Y说明符。这种差异虽然小,但意义重大。Y计算ISO年,这通常用于日历格式。参见示例31。2007年12月。真正的年份是2007年,但它是2008年第一周第一周的第一天。因此,如果您使用'dd.MM.yyy',您将获得'2007年12月31日',但如果您使用'dd.MM.yyy',您将获得'2008年12月31日'。正如您所看到的,这不是bug,而是根据所使用的说明符的预期行为


使用yyy而不是yyy。

除非您需要Zend_Date中的翻译或语言环境支持,否则我建议不要使用Zend_Date。它使用起来很麻烦,而且比PHP的原生DateTime类慢得多。除非您需要Zend_Date中的翻译或语言环境支持,否则我建议不要使用Zend_Date。它使用起来很麻烦,而且比PHP的原生DateTime类慢得多。