|
 |
15년 전 |
지난 달 1일부터 말일까지를 구할 때, strtotime("-1 month") 또는 strtotime("1 month ago")를 쓰는 것은 지극히 위험하다.
"한달전" 이라는 말 자체는 로직상 문제가 있을 수 있기 때문이다.
PHP에서는 이를 "지난 달의 날짜수를 현재로 부터 뺀 날짜"를 의미한다.
즉, 2008년 3월 1일의 한달 전은 2008년 2월의 날짜 수인 29을 빼서 2008년 2월 29일.
그런데.. 2008년 3월 31일의 한달 전은?
다소 놀랍게도 2008년 3월 2일이 나온다.
$d = mktime(0,0,0, 3, 31, 2008); //2008년 3월 31일
$last_month = strtotime("-1 month", $d); //한달전..
echo date("Y-m-d", $last_month);
// 2008-03-02
3월 1일의 한달 전은 2월 1일이라는 것이 명확해 보이지만,
3월 31일의 한달 전은 애매모호할 수밖에 없고, 여러가지 다른 문제를 낳지 않기 위해서는 이 로직이 유일한 대안일 수밖에 없다.
만약 지난달 기준으로 특정일 또는 특정 기간 (예를 들어 지난달 말일, 또는 지난달 1일부터 말일까지)를 추출하고자 한다면,
반드시 다음과 같이 해 주어야 한다.
$d = mktime(0,0,0, date("m"), 1, date("Y")); //이번달 1일
$last_month = strtotime("-1 month", $d); //한달전
echo date("Y-m-01", $last_month); //지난달 1일
echo date("Y-m-t", $last_month); //지난달 말일 |
|
추천 : 862 |
추천
목록
|
|