PHP 학습
strtotime() 함수의 문제 발견
문제)
strtotime() 함수를 이용하면 하루전 한달 뒤 등을 손쉽게 구할 수 있습니다.
그런데 오늘 즉 31일에 문제점이 발생하네요.
print date("Y년 m월",strtotime("-1 month"));
위와 같이 해서 출력 하면...
공교롭게도... 2005년 09월이 아닌 2005년 10월이 출력됩니다.
그건 아마도 30일에 해당되는 날짜 만큼만 빼서 발생하는 문제인것 같습니다.
해결)
위의 경우엔 strtotime()함수보다는
date("Y년 m월",mktime(0,0,0,date("m")-1,15,date("Y")));
가 가장 적당해 보입니다.
혹시 더 좋은 방법 있으면 ^^;
위에서 1이 아니고 15로 한거는 2월달을 생각해서 입니다.
ex)
if (Date("d") == "31") {
if (date('m')-1 == "12") {
$이전조사월 = Date("Ym",mktime(0,0,0,date('m')-1,15,date('Y')-1));
$이전조사월영어 = Date("F",mktime(0,0,0,date('m')-1,15,date('Y')-1));
}
else {
$이전조사월 = Date("Ym",mktime(0,0,0,date('m')-1,15,date('Y')));
$이전조사월영어 = Date("F",mktime(0,0,0,date('m')-1,15,date('Y')));
}
if (date('m')-2 <= "12" && date('m')-2 >= "11") {
$이전전조사월 = Date("Ym",mktime(0,0,0,date('m')-2,15,date('Y')-2));
$이전전조사월영어 = Date("F",mktime(0,0,0,date('m')-2,15,date('Y')-2));
}
else {
$이전전조사월 = Date("Ym",mktime(0,0,0,date('m')-2,15,date('Y')));
$이전전조사월영어 = Date("F",mktime(0,0,0,date('m')-2,15,date('Y')));
}
}
else {
$이전전조사월 = Date("Ym",strtotime("-2 month()"));
$이전전조사월영어 = Date("F",strtotime("-2 month()"));
$이전조사월 = Date("Ym",strtotime("-1 month()"));
$이전조사월영어 = Date("F",strtotime("-1 month()"));
}

