특정일로부터 날짜 구하는 질문입니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

특정일로부터 날짜 구하는 질문입니다. 정보

특정일로부터 날짜 구하는 질문입니다.

본문

임의의 날짜 12월 21일이 있다고 가정했을 때,
이 날짜로부터 40일 후의 날짜까지 목록으로 만들어 주려면 어떻게 해야 하는 지 궁금합니다.
(토, 일요일을 제외한)

2010년 달력으로 예를 들자면,

12월 21일(화)
12월 22일(수)
12월 23일(목)
12월 24일(금)
12월 25일(토)
12월 26일(일)

12월 27일(월)
12월 28일(화)
12월 29일(수)
12월 30일(목)
12월 31일(금)
1월 1일(토)
1월 2일(일)
1월 3일(월)
1월 4일(화)
1월 5일(수)
1월 6일(목)
1월 7일(금)


위와 같은 형태의 목록으로 표시하고 싶습니다. 회색으로 옅게 표시된 것은 표시되지 않을 항목입니다.

고수님들의 도움 부탁드립니다.

댓글 전체

php로 looping해도 됩니다만, 그래도 쉬은 방법은
디비에 날짜 테이블 만들고 해당 기간만큼 가져 오는 것입니다.

http://kr2.php.net/manual/kr/function.mktime.php
<?

$startdate = "2010-12-21";
$timestamp = strtotime($startdate);
$second_in_a_day = 24*3600;

for ($day; $day < 40; $day++)
{
  $timestamp += $day * $second_in_a_day;
  $w = date('w', $timestamp)
  if ($w != 0 && $w != 6) {
      echo date ('n월 j일', $timestamp);
      switch ($w) {
        case 1:
          echo "(월)";
          break;
        case 1:
          echo "(화)";
          break
        case 1:
          echo "(수)";
          break
        case 1:
          echo "(목)";
          break
        case 1:
          echo "(금)";
          break
      }
      echo "<br />\n";
  }
}
?>

아마도 원하시는 코드일 것 같네요.
; 이 몇군데 빠져서 그랬던거네요.

그런데 결과값이

12월 21일
12월 22일
12월 24일
12월 27일(월)
12월 31일
1월 5일
1월 11일
1월 18일
1월 26일
2월 4일
2월 14일(월)
2월 25일
3월 9일
3월 22일
4월 5일
4월 20일
5월 6일
5월 23일(월)
6월 10일
6월 29일
7월 19일
8월 9일
8월 31일
9월 23일
10월 17일(월)
11월 11일
12월 7일
1월 3일
1월 31일
2월 29일
3월 30일
4월 30일(월)
6월 1일
7월 4일
8월 7일
9월 11일
10월 17일
11월 23일
12월 31일(월)
2월 8일

이렇게 나오네요;;
엑스엠엘님, 텍와이드님 성의 있는 답변 감사드립니다.
다른 경로를 통해 원하던 코드를 얻을 수 있어서 올립니다.

<?
$defaultDate = "2010-12-21"; // 기준 날짜
$days = 40; // 기준 날짜로 부터 출력할 날 수

$weekDays = array('일','월','화','수','목','금','토');
$defaultTime = strtotime($defaultDate);

$j = 0;
for($i=0;$i<$days+$j;$i++) {
    $newTime = strtotime("+".$i." days", $defaultTime);
    $weekNum = date("w", $newTime);
       
        if(!in_array($weekNum, array(0,6))) {
            echo date("n월 d일", $newTime);
            echo "<br />";
        } else {
            $j++;
        }
}
?>
<?
$startdate = "2010-12-21";
$timestamp = strtotime($startdate);
$second_in_a_day = 24*3600;

for ($day; $day < 40; $day++)
{
  $timestamp += $day * $second_in_a_day;
  $w = date('w', $timestamp);
  if ($w != 0 && $w != 6) {
      echo date ('n월 j일', $timestamp);
      switch ($w) {
        case 1:
          echo "(월)";
          break;
        case 2:
          echo "(화)";
          break;
        case 3:
          echo "(수)";
          break;
        case 4:
          echo "(목)";
          break;
        case 5:
          echo "(금)";
          break;
      }
      echo "<br />\n";
  }
}
?>

case 부분 1 로 되어 있던 것을 수정하고 ; 빠져 있던 곳 채운 결과값이
12월 21일(화)
12월 22일(수)
12월 24일(금)
12월 27일(월)
12월 31일(금)
1월 5일(수)
1월 11일(화)
1월 18일(화)
1월 26일(수)
2월 4일(금)
2월 14일(월)
2월 25일(금)
3월 9일(수)
3월 22일(화)
4월 5일(화)
4월 20일(수)
5월 6일(금)
5월 23일(월)
6월 10일(금)
6월 29일(수)
7월 19일(화)
8월 9일(화)
8월 31일(수)
9월 23일(금)
10월 17일(월)
11월 11일(금)
12월 7일(수)
1월 3일(화)
1월 31일(화)
2월 29일(수)
3월 30일(금)
4월 30일(월)
6월 1일(금)
7월 4일(수)
8월 7일(화)
9월 11일(화)
10월 17일(수)
11월 23일(금)
12월 31일(월)
2월 8일(금)

이렇게 나오네요...

제가 올린 코드는

12월 21일
12월 22일
12월 23일
12월 24일
12월 27일
12월 28일
12월 29일
12월 30일
12월 31일
1월 03일
1월 04일
1월 05일
1월 06일
1월 07일
1월 10일
1월 11일
1월 12일
1월 13일
1월 14일
1월 17일
1월 18일
1월 19일
1월 20일
1월 21일
1월 24일
1월 25일
1월 26일
1월 27일
1월 28일
1월 31일
2월 01일
2월 02일
2월 03일
2월 04일
2월 07일
2월 08일
2월 09일
2월 10일
2월 11일
2월 14일

이렇게 나옵니다. 요일은 일부러 뺀거구요...

결과값만 맞춰주시면 답변채택 해드릴께요.

암튼 성의 있는 답변 너무 감사합니다.
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT