Question

Thas my little function:

setlocale(LC_TIME, 'de_DE');
$date_array = array($blog_month,$blog_year);
var_dump($date_array); 
$title_date = strftime("%B %Y", mktime(0,0,0, $date_array[0], 0, $date_array[1]));
echo $title_date;

the var_dump gives

array(2) {
  [0]=> int(5)
  [1]=> int(2013)
}

So the array is correct. But the $title_date is always wrong. In this particular case the echo shows April 2013. I guess something is wrong with the mktime, because i checked the timestamp it gives and it is always the wrong one.

I did read the PHP documentation, and this should be work, don't know whats wrong. Any idea or suggestion?

best regards denym

Was it helpful?

Solution

The setlocale function returns false if the locale couldn't be set, and you are ignoring the return value. In this case the call must be failing (possibly because the de_DE locale isn't installed?) and strftime still formats dates in English.

On the other hand, the day 0 corresponds to the "last day of the month before". So mktime is returning April 30, not May 1 if that's what you expect. For May 1 use this:

mktime(0,0,0, $date_array[0], 1, $date_array[1])
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top