함수들이 계산을 할때 한달은 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
출처 : 잠돌의 티스토리
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 430 | 19년 전 | 4086 | ||
| 429 | 19년 전 | 3282 | ||
| 428 | 19년 전 | 4117 | ||
| 427 | 19년 전 | 3461 | ||
| 426 | 19년 전 | 3092 | ||
| 425 | 19년 전 | 3387 | ||
| 424 | 19년 전 | 2430 | ||
| 423 | 19년 전 | 2837 | ||
| 422 | 19년 전 | 2332 | ||
| 421 | 19년 전 | 3700 | ||
| 420 | 19년 전 | 4723 | ||
| 419 | 19년 전 | 3771 | ||
| 418 |
|
19년 전 | 1723 | |
| 417 | 19년 전 | 2729 | ||
| 416 | 19년 전 | 2377 | ||
| 415 | 19년 전 | 2599 | ||
| 414 | 19년 전 | 4394 | ||
| 413 |
|
19년 전 | 2568 | |
| 412 | 19년 전 | 3024 | ||
| 411 |
|
19년 전 | 2975 | |
| 410 |
|
19년 전 | 3661 | |
| 409 |
|
19년 전 | 3619 | |
| 408 |
|
19년 전 | 1837 | |
| 407 | 19년 전 | 2204 | ||
| 406 | 19년 전 | 2766 | ||
| 405 | 19년 전 | 2432 | ||
| 404 | 19년 전 | 4290 | ||
| 403 | 19년 전 | 3287 | ||
| 402 |
NeoGenesis
|
19년 전 | 4074 | |
| 401 | 19년 전 | 2589 | ||
| 400 |
|
19년 전 | 2473 | |
| 399 | 19년 전 | 2941 | ||
| 398 | 19년 전 | 2472 | ||
| 397 | 19년 전 | 2773 | ||
| 396 | 19년 전 | 2459 | ||
| 395 | 19년 전 | 3165 | ||
| 394 | 19년 전 | 1691 | ||
| 393 | 19년 전 | 2977 | ||
| 392 | 19년 전 | 2238 | ||
| 391 | 19년 전 | 2170 | ||
| 390 | 19년 전 | 2263 | ||
| 389 | 19년 전 | 2624 | ||
| 388 | 19년 전 | 2116 | ||
| 387 | 19년 전 | 4462 | ||
| 386 |
|
19년 전 | 2668 | |
| 385 |
|
19년 전 | 2454 | |
| 384 | 19년 전 | 2968 | ||
| 383 | 19년 전 | 3034 | ||
| 382 | 19년 전 | 3087 | ||
| 381 |
|
19년 전 | 2621 | |
| 380 |
|
19년 전 | 3001 | |
| 379 | 19년 전 | 2536 | ||
| 378 | 19년 전 | 2192 | ||
| 377 | 19년 전 | 2768 | ||
| 376 | 19년 전 | 2463 | ||
| 375 |
|
19년 전 | 2546 | |
| 374 | 19년 전 | 3793 | ||
| 373 | 19년 전 | 3253 | ||
| 372 | 19년 전 | 4972 | ||
| 371 |
세은아빠2
|
19년 전 | 2398 | |
| 370 | 19년 전 | 4489 | ||
| 369 | 19년 전 | 3092 | ||
| 368 | 19년 전 | 2877 | ||
| 367 | 19년 전 | 3716 | ||
| 366 | 19년 전 | 2626 | ||
| 365 | 19년 전 | 3713 | ||
| 364 | 19년 전 | 3992 | ||
| 363 | 19년 전 | 3417 | ||
| 362 | 19년 전 | 3467 | ||
| 361 | 19년 전 | 4086 | ||
| 360 |
hwatta
|
19년 전 | 2344 | |
| 359 | 19년 전 | 5081 | ||
| 358 | 19년 전 | 3634 | ||
| 357 | 19년 전 | 2576 | ||
| 356 |
sdesign1s
|
19년 전 | 2258 | |
| 355 | 20년 전 | 2721 | ||
| 354 | 20년 전 | 3014 | ||
| 353 | 20년 전 | 2781 | ||
| 352 |
|
20년 전 | 5761 | |
| 351 |
|
20년 전 | 2688 | |
| 350 |
|
20년 전 | 4267 | |
| 349 |
hwatta
|
20년 전 | 2159 | |
| 348 | 20년 전 | 7297 | ||
| 347 | 20년 전 | 2401 | ||
| 346 | 20년 전 | 3480 | ||
| 345 | 20년 전 | 4286 | ||
| 344 | 20년 전 | 2610 | ||
| 343 | 20년 전 | 3900 | ||
| 342 | 20년 전 | 3049 | ||
| 341 | 20년 전 | 4073 | ||
| 340 |
|
20년 전 | 5104 | |
| 339 |
|
20년 전 | 4213 | |
| 338 | 20년 전 | 5839 | ||
| 337 | 20년 전 | 2019 | ||
| 336 |
|
20년 전 | 3294 | |
| 335 |
|
20년 전 | 3522 | |
| 334 |
|
20년 전 | 2906 | |
| 333 |
hwatta
|
20년 전 | 2413 | |
| 332 | 20년 전 | 4639 | ||
| 331 | 20년 전 | 2258 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기