[PHP] strtotime -1 Month 오류
지난 달읠 날짜를 구하기 보통 아래와 같은 코드를 작성합니다.
<?php
echo date('Y-m-01', strtotime('-1 Month', time()));
?>
그런데 이 코드의 문제점은 오늘 날짜가 30일이나 31일 일 경우에 제대로 지난 달을 표시하지 못한다는 것이다. 예를 들어 오늘이 3월 30일이라면 위 코드처럼 했을 때 2013-03-01 과 같인 결과가 나오는 것을 확인할 수 있다. 예상대로라면 2013-02-01이 표시되어야 하는데 그렇지 못한 것이다. 이것은 2월의 마지막 날이 28일까지이기 때문이라고 생각이 된다. 오늘 날짜가 1부터 28일 사이의 값이라면 문제가 되지 않는다. 그러나 3월 29일이후부터는 2월이 아닌 3월 표시하게 된다.
이런 문제를 해결하기 위해서는 기준이 되는 날을 이전 달의 마지막 날 보다 작은 것으로 해주면 된다. 그런데 이것도 마지막 날을 계산해야 하는 번거로움이 있으니까 간단하게 이번 달 1일로 설정하고 지난 달의 날짜를 구하면 간단하게 해결이 된다.
<?php
$month_firstday = strtotime(date('Y-m-01', time()));
$lastmonth_day = date('Y-m-01', strtotime('-1 Month', $month_firstday));
?>
이런 식으로 하면 지난 달의 날짜를 제대로 구할 수가 있다.