2013-07-12 4 views
0

인공 고관절 내 작은 기능 :잘못된 출력()

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; 

위해서 var_dump는

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

그래서 배열이 정확한지 준다. 그러나 $title_date은 항상 잘못되었습니다. 이 특별한 경우 에코는 April 2013을 보여줍니다. 나는 mktime과 함께 뭔가 잘못되었다고 생각합니다. 왜냐하면 나는 timestamp을 확인했기 때문에 항상 잘못된 것입니다.

필자는 PHP 문서를 읽었으며 이것이 정상적으로 작동 하는지를 잘 모릅니다. 아이디어 나 제안이 있으십니까?

안부 denym

답변

0

setlocale 기능은 로케일이 설정 할 수없는 경우 false 반환하고 반환 값을 무시하고 있습니다. 이 경우 호출이 실패해야합니다 (de_DE 로켈이 설치되어 있지 않기 때문일 수 있음). strftime은 영어로 날짜를 계속 포맷합니다.

한편, 0 일은 "last day of the month before"에 해당합니다. 따라서 mktime은 예상 한 경우 5 월 1 일이 아닌 4 월 30 일에 반환됩니다. 5 월 1 일에 다음을 사용하십시오 :

mktime(0,0,0, $date_array[0], 1, $date_array[1]) 
+0

감사합니다. 요일을 0 = 1 일로 변경해 주셔서 감사합니다. –