테스트 사이트 - 개발 중인 베타 버전입니다

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 

 

 

 

데모 - http://demo.widgets.co.kr/?c=64/67/68  

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

게시글 목록

번호 제목
16619
16618
16612
16603
16598
16589
16578
16571
16563
16554
16546
16534
16527
16520
16513
16510
16505
16498
16490
16486
16482
16465
16458
16456
16448
16447
16440
16439
16438
16430