함수들이 계산을 할때 한달은 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
출처 : 잠돌의 티스토리
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 7630 | 10년 전 | 648 | ||
| 7629 |
|
10년 전 | 2379 | |
| 7628 | 10년 전 | 787 | ||
| 7627 |
|
10년 전 | 1018 | |
| 7626 |
|
10년 전 | 1785 | |
| 7625 | 10년 전 | 693 | ||
| 7624 | 10년 전 | 712 | ||
| 7623 |
|
10년 전 | 3075 | |
| 7622 | 10년 전 | 721 | ||
| 7621 |
leeleeleelee
|
10년 전 | 582 | |
| 7620 | 10년 전 | 537 | ||
| 7619 | 10년 전 | 479 | ||
| 7618 | 10년 전 | 1013 | ||
| 7617 | 10년 전 | 722 | ||
| 7616 | 10년 전 | 633 | ||
| 7615 | 10년 전 | 725 | ||
| 7614 | 10년 전 | 1254 | ||
| 7613 |
|
10년 전 | 2082 | |
| 7612 | 10년 전 | 1137 | ||
| 7611 | 10년 전 | 1405 | ||
| 7610 |
|
10년 전 | 1898 | |
| 7609 |
|
10년 전 | 1331 | |
| 7608 |
mwdkim
|
10년 전 | 1126 | |
| 7607 |
|
10년 전 | 1051 | |
| 7606 |
mwdkim
|
10년 전 | 3923 | |
| 7605 | 10년 전 | 685 | ||
| 7604 | 10년 전 | 1023 | ||
| 7603 | 10년 전 | 1646 | ||
| 7602 |
|
10년 전 | 1068 | |
| 7601 |
AniNest
|
10년 전 | 2785 | |
| 7600 |
port443
|
10년 전 | 1022 | |
| 7599 | 10년 전 | 942 | ||
| 7598 | 10년 전 | 1014 | ||
| 7597 | 10년 전 | 4567 | ||
| 7596 |
SeungYeon
|
10년 전 | 886 | |
| 7595 |
untitled
|
10년 전 | 2415 | |
| 7594 |
프로그래머7
|
10년 전 | 1719 | |
| 7593 |
untitled
|
10년 전 | 2358 | |
| 7592 |
untitled
|
10년 전 | 1932 | |
| 7591 |
untitled
|
10년 전 | 2673 | |
| 7590 |
아리마2001
|
10년 전 | 850 | |
| 7589 | 10년 전 | 1108 | ||
| 7588 |
|
10년 전 | 2913 | |
| 7587 | 10년 전 | 1301 | ||
| 7586 | 10년 전 | 667 | ||
| 7585 | 10년 전 | 1689 | ||
| 7584 | 10년 전 | 1409 | ||
| 7583 |
leeleeleelee
|
10년 전 | 1157 | |
| 7582 |
|
10년 전 | 1104 | |
| 7581 | 10년 전 | 1325 | ||
| 7580 | 10년 전 | 984 | ||
| 7579 |
|
10년 전 | 603 | |
| 7578 | 10년 전 | 1426 | ||
| 7577 |
|
10년 전 | 1870 | |
| 7576 | 10년 전 | 1383 | ||
| 7575 |
멋진남자임
|
10년 전 | 1459 | |
| 7574 | 10년 전 | 2115 | ||
| 7573 | 10년 전 | 3247 | ||
| 7572 | 10년 전 | 758 | ||
| 7571 |
|
10년 전 | 780 | |
| 7570 |
|
10년 전 | 1308 | |
| 7569 | 10년 전 | 1546 | ||
| 7568 |
this1mg
|
10년 전 | 1046 | |
| 7567 |
|
10년 전 | 755 | |
| 7566 | 10년 전 | 914 | ||
| 7565 |
Angel하늘
|
10년 전 | 989 | |
| 7564 |
seoldi
|
10년 전 | 1230 | |
| 7563 |
|
10년 전 | 1369 | |
| 7562 |
멋진남자임
|
10년 전 | 2078 | |
| 7561 | 10년 전 | 711 | ||
| 7560 |
leeleeleelee
|
10년 전 | 897 | |
| 7559 | 10년 전 | 5040 | ||
| 7558 |
RinaP
|
10년 전 | 776 | |
| 7557 |
|
10년 전 | 1237 | |
| 7556 | 10년 전 | 1191 | ||
| 7555 |
hyohyojj1234
|
10년 전 | 1656 | |
| 7554 | 10년 전 | 1090 | ||
| 7553 |
senseme
|
10년 전 | 1335 | |
| 7552 |
ehdltdoit
|
10년 전 | 1432 | |
| 7551 |
|
10년 전 | 1815 | |
| 7550 |
leeleeleelee
|
10년 전 | 1585 | |
| 7549 | 10년 전 | 2416 | ||
| 7548 | 10년 전 | 1836 | ||
| 7547 |
멋진남자임
|
10년 전 | 1957 | |
| 7546 | 10년 전 | 998 | ||
| 7545 |
ILMare1003
|
10년 전 | 1279 | |
| 7544 |
|
10년 전 | 1247 | |
| 7543 | 10년 전 | 881 | ||
| 7542 | 10년 전 | 653 | ||
| 7541 |
울라라라우
|
10년 전 | 861 | |
| 7540 | 10년 전 | 1596 | ||
| 7539 | 10년 전 | 927 | ||
| 7538 |
|
10년 전 | 1829 | |
| 7537 | 10년 전 | 3607 | ||
| 7536 |
Gaumi
|
10년 전 | 1408 | |
| 7535 |
프로그램은어려워
|
10년 전 | 1263 | |
| 7534 |
senseme
|
10년 전 | 1203 | |
| 7533 | 10년 전 | 1190 | ||
| 7532 | 10년 전 | 854 | ||
| 7531 | 10년 전 | 2044 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기