특정일로부터 날짜 구하는 질문입니다. 정보
특정일로부터 날짜 구하는 질문입니다.본문
임의의 날짜 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
디비에 날짜 테이블 만들고 해당 기간만큼 가져 오는 것입니다.
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";
}
}
?>
아마도 원하시는 코드일 것 같네요.
$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";
}
}
?>
아마도 원하시는 코드일 것 같네요.
Parse error: syntax error, unexpected T_IF in ..
과 같은 에러가 뜨네요.
if ($w != 0 && $w != 6) {
이 부분에 대한 것인 것 같습니다.
과 같은 에러가 뜨네요.
if ($w != 0 && $w != 6) {
이 부분에 대한 것인 것 같습니다.
; 이 몇군데 빠져서 그랬던거네요.
그런데 결과값이
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월 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일
이렇게 나오네요;;
case 오타였습니다...
엑스엠엘님, 텍와이드님 성의 있는 답변 감사드립니다.
다른 경로를 통해 원하던 코드를 얻을 수 있어서 올립니다.
<?
$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++;
}
}
?>
다른 경로를 통해 원하던 코드를 얻을 수 있어서 올립니다.
<?
$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일
이렇게 나옵니다. 요일은 일부러 뺀거구요...
결과값만 맞춰주시면 답변채택 해드릴께요.
암튼 성의 있는 답변 너무 감사합니다.
$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일
이렇게 나옵니다. 요일은 일부러 뺀거구요...
결과값만 맞춰주시면 답변채택 해드릴께요.
암튼 성의 있는 답변 너무 감사합니다.

http://kr2.php.net/manual/en/function.mktime.php
for( $=0; $i<40; $i++)
echo date("M월 d일", mktime(0, 0, 0, 1, $i, 2010)), '<br />';
2010년 1월 1일부터 40일간
for( $=0; $i<40; $i++)
echo date("M월 d일", mktime(0, 0, 0, 1, $i, 2010)), '<br />';
2010년 1월 1일부터 40일간