N개월 뒤 오늘 구하는 소스 - strtotime 오류 방지 정보
PHP N개월 뒤 오늘 구하는 소스 - strtotime 오류 방지
관련링크
본문
데모 - http://demo.widgets.co.kr/?c=64/67/68
달력 등을 만들때 가끔 만나는 오류 중 하나입니다.
다음달 말일이 이번달보다 많을 때 한달 뒤 오늘은 날짜가 다르게 나오죠.
이건 버그가 아니라고 func 자체를 수정할 계획이 없다고 합니다.
향후 고처질 버그도 아니고 그대로 사용하면 필시 오류를 발생시킵니다.
그래서 만들어 쓰는 함수입니다.
function getDateTime($now, $term=1) {
$time = strtotime(($term>0?"+":"-").$term." month", strtotime(date("Y-m",strtotime($now))." -01 "));
$l = date('t', $time);
return date("Y-m-".$l, $time);
}
foreach(array('2015-10-31','2015-11-30','2015-12-31','2016-01-31','2016-02-29','2016-03-31','2016-04-30','2016-05-31','2015-10-04','2015-11-18','2015-12-27')
as $date ){
echo $date.' → '.getDateTime($date,3).'<br>';
}
결과물
2015-10-31 → 2016-01-31
2015-11-30 → 2016-02-29
2015-12-31 → 2016-03-31
2016-01-31 → 2016-04-30
2016-02-29 → 2016-05-31
2016-03-31 → 2016-06-30
2016-04-30 → 2016-07-31
2016-05-31 → 2016-08-31
2015-10-04 → 2016-01-31
2015-11-18 → 2016-02-29
2015-12-27 → 2016-03-31
0
댓글 0개