Romain
Romain

Reputation: 455

Convert a date in php, toString function isn't working

I'm trying to convert a date to a string by using the toString('dd MMMM YYY') function. But here, this isn't working.

Here is my code:

    $date_start = new Zend_Date(strtotime($this->startdate));
    echo($date_start); 

The result is: 31 Dec 2012 00:00:00

    $date_input = $date_start->toString('dd MMMM YYY');
    echo($date_input);

The result is: 31 December 2013

What do I have to do to obtain 31 December 2012 ?

Upvotes: 1

Views: 610

Answers (2)

Tadeck
Tadeck

Reputation: 137300

This is a known issue described here: http://framework.zend.com/issues/browse/ZF-5297

Note that the default ISO format differs from PHP's format which can be irritating if you have not used in previous. Especially the format specifiers for Year and Minute are often not used in the intended way.

For year there are two specifiers available which are often mistaken. The Y specifier for the ISO year and the y specifier for the real year. The difference is small but significant. Y calculates the ISO year, which is often used for calendar formats. See for example the 31. December 2007. The real year is 2007, but it is the first day of the first week in the week 1 of the year 2008. So, if you are using 'dd.MM.yyyy' you will get '31.December.2007' but if you use 'dd.MM.YYYY' you will get '31.December.2008'. As you see this is no bug but a expected behaviour depending on the used specifiers.

Use "yyy" instead of "YYY".

Upvotes: 5

ceejayoz
ceejayoz

Reputation: 179994

Use yyy instead of YYY.

YYY is the ISO-8601 date, which is different from a calendar date.

http://framework.zend.com/manual/1.12/en/zend.date.constants.html

Upvotes: 3

Related Questions