함수들이 계산을 할때 한달은 30일 혹은 31일 기준이다.
해서 매월 일수가 다른 경우 날짜가 다르게 나타나거나 월이 한번 더 넘어가기도 한다.
예를 들어 5월 31일부터 한달 후 라고 하면 6월 30일이 아니라 7월 1일이 나온다.
예약을 3개월단위로 끊어서 받는 경우 지금이 5월이면 7월 까지만 예약이 가능해야 하는데, 8월이 열리는 경우가 있다는 것이다.
이 현상은 버그라고 세계 수많은 개발자가 항의하지만, 정작 당사자들은 버그가 아니니 우회법을 개발해 사용하라고 공식 답변했다.
근데 우회법은 공식적으로 내놓지 않았다는게 문제.
정상적인 함수로는 이 동작에 오류가 존재하기에 함수로 만들었다.
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
출처 : 잠돌의 티스토리
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 330 |
prosper
|
20년 전 | 2254 | |
| 329 |
prosper
|
20년 전 | 1867 | |
| 328 |
prosper
|
20년 전 | 1679 | |
| 327 | 20년 전 | 3751 | ||
| 326 | 20년 전 | 4837 | ||
| 325 |
hwatta
|
20년 전 | 2462 | |
| 324 |
|
20년 전 | 3131 | |
| 323 | 20년 전 | 5842 | ||
| 322 |
hwatta
|
20년 전 | 2829 | |
| 321 |
hwatta
|
20년 전 | 2305 | |
| 320 |
yesmoa
|
20년 전 | 4561 | |
| 319 | 20년 전 | 2667 | ||
| 318 | 20년 전 | 2230 | ||
| 317 |
kyodon
|
20년 전 | 2755 | |
| 316 | 20년 전 | 2565 | ||
| 315 |
|
20년 전 | 2874 | |
| 314 |
|
20년 전 | 3324 | |
| 313 |
|
20년 전 | 2632 | |
| 312 |
yesmoa
|
20년 전 | 4704 | |
| 311 | 20년 전 | 3257 | ||
| 310 |
홀로남은자
|
20년 전 | 4549 | |
| 309 | 20년 전 | 3002 | ||
| 308 | 20년 전 | 4116 | ||
| 307 | 20년 전 | 4351 | ||
| 306 | 20년 전 | 7024 | ||
| 305 | 20년 전 | 3861 | ||
| 304 | 20년 전 | 2756 | ||
| 303 |
크리스탈처럼
|
20년 전 | 4384 | |
| 302 | 20년 전 | 2197 | ||
| 301 |
|
20년 전 | 4314 | |
| 300 | 20년 전 | 3787 | ||
| 299 | 20년 전 | 2591 | ||
| 298 | 20년 전 | 4815 | ||
| 297 |
|
20년 전 | 2519 | |
| 296 | 20년 전 | 4513 | ||
| 295 | 20년 전 | 3560 | ||
| 294 | 20년 전 | 3584 | ||
| 293 | 20년 전 | 3808 | ||
| 292 | 20년 전 | 3198 | ||
| 291 |
yesmoa
|
20년 전 | 5927 | |
| 290 | 20년 전 | 2931 | ||
| 289 | 20년 전 | 5836 | ||
| 288 |
|
20년 전 | 2367 | |
| 287 |
|
20년 전 | 1782 | |
| 286 |
|
20년 전 | 2137 | |
| 285 |
|
20년 전 | 3529 | |
| 284 |
|
20년 전 | 2026 | |
| 283 |
|
20년 전 | 4397 | |
| 282 | 20년 전 | 3379 | ||
| 281 |
|
20년 전 | 2201 | |
| 280 |
|
20년 전 | 7794 | |
| 279 | 20년 전 | 5540 | ||
| 278 | 20년 전 | 2983 | ||
| 277 |
|
20년 전 | 5565 | |
| 276 | 20년 전 | 2351 | ||
| 275 | 20년 전 | 2596 | ||
| 274 | 20년 전 | 2372 | ||
| 273 | 20년 전 | 2208 | ||
| 272 | 20년 전 | 2139 | ||
| 271 | 20년 전 | 2596 | ||
| 270 | 20년 전 | 2612 | ||
| 269 | 20년 전 | 2474 | ||
| 268 | 20년 전 | 2673 | ||
| 267 | 20년 전 | 2355 | ||
| 266 | 20년 전 | 2558 | ||
| 265 | 20년 전 | 3494 | ||
| 264 |
|
20년 전 | 5353 | |
| 263 |
|
20년 전 | 3720 | |
| 262 | 20년 전 | 3169 | ||
| 261 |
허저비
|
20년 전 | 5917 | |
| 260 |
|
20년 전 | 5709 | |
| 259 | 20년 전 | 4131 | ||
| 258 | 20년 전 | 2373 | ||
| 257 | 20년 전 | 3179 | ||
| 256 | 20년 전 | 1895 | ||
| 255 | 20년 전 | 1560 | ||
| 254 | 20년 전 | 3136 | ||
| 253 | 20년 전 | 3542 | ||
| 252 | 20년 전 | 5114 | ||
| 251 | 20년 전 | 5799 | ||
| 250 | 20년 전 | 3670 | ||
| 249 | 20년 전 | 5010 | ||
| 248 | 20년 전 | 3276 | ||
| 247 | 20년 전 | 3630 | ||
| 246 |
|
20년 전 | 7943 | |
| 245 |
|
20년 전 | 5896 | |
| 244 | 20년 전 | 4479 | ||
| 243 |
|
20년 전 | 4044 | |
| 242 | 20년 전 | 2776 | ||
| 241 | 20년 전 | 2716 | ||
| 240 | 20년 전 | 2355 | ||
| 239 | 20년 전 | 1649 | ||
| 238 |
아우겐나이스
|
20년 전 | 2257 | |
| 237 |
email
|
20년 전 | 3680 | |
| 236 | 20년 전 | 4145 | ||
| 235 | 20년 전 | 10458 | ||
| 234 | 20년 전 | 5060 | ||
| 233 | 20년 전 | 3362 | ||
| 232 | 20년 전 | 3195 | ||
| 231 | 20년 전 | 3831 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기