제목 | 월마다 한개의 날짜를 생성할려고 하는데 날짜 생성시 간혹 년과 월이 바뀌는 문제때문에 글을 올렸습니다. | ||
---|---|---|---|
카테고리 | PHP | ||
글쓴이 | 정수리 | 작성시각 | 2016/11/21 15:32:12 |
|
|||
1월~12월까지 각월마다 랜덤으로 특정 날짜를 생성할려고 합니다.
<?php for($i=1; $i<=12; $i++){//반복문을 통해 1~12까지 반복문을 돌립니다. echo create_date($i).''; } function create_date($i){//날짜 생성 함수 $date; if($i%2==1){//해당 마지막일이 31일인 월의 경우 0과 32사이 날짜가 생성되도록 $date = date('Y-m-d', mktime(0, 0, 0, $i, mt_rand(0,32), date('Y'))); }elseif($i==8){//8월의 경우 마지막날이 31일이기에 따로 조건문으로 생성 $date = date('Y-m-d', mktime(0, 0, 0, $i, mt_rand(0,32), date('Y'))); }elseif($i==2){//2월의 경우 마지막날이 28이기에 $date = date('Y-m-d', mktime(0, 0, 0, $i, mt_rand(0,28), date('Y'))); }else{//나머지 마지막날이 30일인 월의 날짜 생성 $date = date('Y-m-d', mktime(0, 0, 0, $i, mt_rand(0,31), date('Y'))); } return $date; } ?> 각월마다 랜덤으로 날짜는 잘 생성되는데 확인차 계속 새로고침을 하면 간혹 월마다 년도와 월이 변경되어 출력이 되네요 ex) 2016-01 2016-02 2016-03 2016-04 2016-05 2016-06 2016-07 2016-08 2016-09 2016-10 2016-11 2016-12 이렇게 출력이 되어야 하는데 1월달의 2016-01로 표시되어야하는 부분에서는 간혹 2016-02 또는 2015-01 표시가 됩니다. 코드의 어느부분을 수정해야 될까요? |
|||
다음글 | 구글 차트 질문있습니다 ㅠㅠ (1) | ||
이전글 | 설계 및 개발중에서 나타나는 문서화의 문제점에 대한 질... (3) | ||
배강민
/
2016/11/21 15:41:17 /
추천
0
|
정수리
/
2016/11/21 15:43:53 /
추천
0
@배강민 아 그렇군요 제가 메뉴얼을 보긴하였데 잘못이해 했나보네요 변경해서 확인해보니 아주잘되네요 ^^감사합니다. |
배강민
/
2016/11/21 15:56:57 /
추천
0
다음부터는 본인이 만들어낸 값 mt_rand(0,32) 등을 옆에 같이 찍어서 디버깅해보세요. 만약, 그리만 하셨어도, 질문을 위한 접속, 로그인, 질문내용작성의 시간을 버실 수 있으셨을 겁니다. |
Dexter
/
2016/11/22 03:17:41 /
추천
0
<?php function create_date($month='',$year='') { $day = mt_rand(1, date('t', mktime(0, 0, 0, $month, 1, $year))); return implode('-', [$year, $month, $day]); } for($i=1; $i<=12; $i++) { echo create_date($i, date('Y')).'<br>'; } ?> 야밤에 심심해서... 테스트 안해봐서 잘 될지는 모르겠네요. |
https://secure.php.net/manual/kr/function.mt-rand.php
mt_rand(0, 32)면 1~31이 아니라 0~32 안에서 하나를 집어냅니다.
즉, 0, 32도 나올 수 있습니다.
1월 0일이 존재하나요? 3월 32일이 존재하나요?
1월 0일이면 작년 12월 31일이 되고, 3월 32일이면 4월 1일이 됩니다.