ClassicASP 간단 달력만들기
페이지 정보
본문
----------------------------------------------------------------
원본소스 : http://k.daum.net/qna/view.html?qid=01KwD
Devpia의 김종민씨가 만드신 달력입니다.
----------------------------------------------------------------
먼저 기억해 둘 함수가 있습니다.
Date():
오 늘의 날짜를 반환합니다.
예: Response.Write Date()
Year (인자) :
인자로 주어진 날짜에서 연도만 쏙 빼서 반납합니다.
예: Response.Write Year(Date())
Month (인자) :
인자로 주어진 날짜에서 달만 쏙 빼서 반납합니다.
예: Response.Write Month(Date())
CDate (인자) :
인자를 날짜 형으로 바꾸어 주는 함수임다. 당근 인자는 날짜로 변환될 수 있는 스트링 되겠습니다.
참고: 별것 아닌 것 같지만 날짜끼리 연산을 위해서는 반드시 필요합니다.
예: Response.Write CDate("2000-10-17")
DateADD (인자1, 인자2, 인자3) :
기 준일(인자3)에서 빼거나 더한 날짜를 반환합니다.
인자1 에는 더할 날수가 년("y")인지 달("m")인지 날("d")인지를 구분합니다.
인자2 에는 더할 값을 넣으면 됨다. 물론 숫자임다. 음수도 가능합니다.
인자3 에는 기준일을 적으시면 됩니다.
예: Response.Write DateAdd("m", 3, Date)
DateDiff (인자1, 인자2, 인자3) :
기준일(인자3)에서 주어진 날(인자2) 까지의 차이를 인자1의 구분으로 반환합니다.
인자1 에는 차일를 계산할 것이 년("y")인지 달("m")인지 날("d")인지를 구분합니다.
인자2 에는 기준일과 차이를 구할 날짜를 입력합니다.
인자3 에는 기준일을 적으시면 됩니다.
예: Response.Write DateDiff("d", "1971-02-26", Date())
참고: 2월 26일은 제 생일임다. 생일선물 접수합니다. ^^*
WeekDay (인자) :
인자로 주어진 날이 무슨 요일인지를 숫자로 반환합니다.
(주일: 1, 월: 2, ........ 토: 7)
예: Response.Write WeeKDay(Date())
그럼 대충 사용할 함수는 정리가 되었습니다.
그래도 모르시겠다믄 MSDN 에 더 장황(?)한 설명이 있습니다. 참고하세요.
그럼 로직을 함 살펴보겠습니다.
일단은 표로 달력을 구성합니다.
일 / 월 / 화 / 수 / 목 / 금 / 토
밑에 날짜를 출력합니다.
그럼 보죠. 그 달의 첫 날이 수요일 이다. 그럼 저희는 3개의 TD 를 그냥 넘어가면 됩니다.
글구 출력할 날이 토요일 이라면 토요일 찍고 행 TR 을 바꾸어 줍니다.
아래는 소스입니다.
그래도 카피하셔서 실행하시면 됩니다. 단 소스파일의 이름은 Diary.asp 로 해주세요.
<%
Option Explicit
'선언되지 않은 변수는 거부한다는 뜻... 꼭 사용하시길 권장합니다.
Dim CurDate '출력할 달의 첫날을 저장합니다.
Dim FirstDay '출력할 달의 첫날이 무슨 요일인지를 숫자값으로 가지고 있습니다.
Dim TotalDay '출력할 달의 총날 수를 가지게 됩니다.
Dim Index '그냥 인덱스임다. For... Next 루프용
CurDate = Request.QueryString("CurDate")
'같은 달만 나오면 재미없음다. 사용자가 선택한 달이 올 수 있도록 배려....
if CurDate = "" Then
CurDate = Date()
else
CurDate = CDate(CurDate)
end if
FirstDay = WeeKDay(Year(CurDate) & "-" & Month(CurDate) & "-" & "01")
TotalDay = DateDiff ("d", CurDate, DateAdd("m", 1, CurDate))
'재미있는 로직임다. 다음 날의 오늘날짜 (2000-11-17) 에서 이번 달의 오늘날짜 (2000-10-17)을 빼면
'이번달(10월)의 날수가 나온다는 초등학교 산수되겠습니다.
Response.Write "<br /><h2 style='' align='center'>" & Year(CurDate) & " 년 " & Month(CurDate) & " 월</h2><hr />"
'년도 월 찍고...
%>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#666666" align="center">
<tr align="center">
<td bgcolor="#cccccc">일</td>
<td bgcolor="#cccccc">월</td>
<td bgcolor="#cccccc">화</td>
<td bgcolor="#cccccc">수</td>
<td bgcolor="#cccccc">목</td>
<td bgcolor="#cccccc">금</td>
<td bgcolor="#cccccc">토</td>
</tr>
<tr bgcolor='#ffffff'>
<%
'해당 요일이 올때까지 빈칸을 생성합니다
For Index = 1 To FirstDay - 1
Response.Write "<td bgcolor='#ffffff'></td>"
Next
'해당 월의 날수 만큼 날짜를 출력합니다.
For Index = 1 To TotalDay
Response.Write "<td bgcolor='#ffffff'>"
Response.Write Index & "<br />"
' 추가시작
dim curent_year, curent_month, curent_day
curent_year = Year(CurDate)
curent_month = int(Month(CurDate))
curent_day = int(Index)
if curent_month < 10 then
curent_month = 0 & curent_month
end if
if curent_day < 10 then
curent_day = 0 & curent_day
end if
Response.Write "<a href='Diary_view.asp?today=" & curent_year & curent_month & curent_day &"&room_idx="& room_idx &"'>"
Response.Write "111"
response.write "</a>"
Response.Write "<br />"
' 추가끝
Response.Write "</td>"
'토요일 찍구 행을 바꾸어줍니다.
If WeekDay(DateAdd("d", Index - 1, FirstDay)) = 7 Then
Response.Write "</tr><tr>"
end if
Next
%>
</tr>
</table>
<br />
<br />
<br />
<table width="100%">
<tr align="center">
<!-- 이전 달의 달력보기 -->
<td><a href="Diary.asp?CurDate=<%=DateAdd("m", -1, CurDate)%>">이전달</a></td>
<!-- 다음 달의 달력보기 -->
<td><a href="Diary.asp?CurDate=<%=DateAdd("m", 1, CurDate)%>">다음달</a></td>
</tr>
</table>
참고자료
http://k.daum.net/qna/view.html?qid=01KwD
원본소스 : http://k.daum.net/qna/view.html?qid=01KwD
Devpia의 김종민씨가 만드신 달력입니다.
----------------------------------------------------------------
먼저 기억해 둘 함수가 있습니다.
Date():
오 늘의 날짜를 반환합니다.
예: Response.Write Date()
Year (인자) :
인자로 주어진 날짜에서 연도만 쏙 빼서 반납합니다.
예: Response.Write Year(Date())
Month (인자) :
인자로 주어진 날짜에서 달만 쏙 빼서 반납합니다.
예: Response.Write Month(Date())
CDate (인자) :
인자를 날짜 형으로 바꾸어 주는 함수임다. 당근 인자는 날짜로 변환될 수 있는 스트링 되겠습니다.
참고: 별것 아닌 것 같지만 날짜끼리 연산을 위해서는 반드시 필요합니다.
예: Response.Write CDate("2000-10-17")
DateADD (인자1, 인자2, 인자3) :
기 준일(인자3)에서 빼거나 더한 날짜를 반환합니다.
인자1 에는 더할 날수가 년("y")인지 달("m")인지 날("d")인지를 구분합니다.
인자2 에는 더할 값을 넣으면 됨다. 물론 숫자임다. 음수도 가능합니다.
인자3 에는 기준일을 적으시면 됩니다.
예: Response.Write DateAdd("m", 3, Date)
DateDiff (인자1, 인자2, 인자3) :
기준일(인자3)에서 주어진 날(인자2) 까지의 차이를 인자1의 구분으로 반환합니다.
인자1 에는 차일를 계산할 것이 년("y")인지 달("m")인지 날("d")인지를 구분합니다.
인자2 에는 기준일과 차이를 구할 날짜를 입력합니다.
인자3 에는 기준일을 적으시면 됩니다.
예: Response.Write DateDiff("d", "1971-02-26", Date())
참고: 2월 26일은 제 생일임다. 생일선물 접수합니다. ^^*
WeekDay (인자) :
인자로 주어진 날이 무슨 요일인지를 숫자로 반환합니다.
(주일: 1, 월: 2, ........ 토: 7)
예: Response.Write WeeKDay(Date())
그럼 대충 사용할 함수는 정리가 되었습니다.
그래도 모르시겠다믄 MSDN 에 더 장황(?)한 설명이 있습니다. 참고하세요.
그럼 로직을 함 살펴보겠습니다.
일단은 표로 달력을 구성합니다.
일 / 월 / 화 / 수 / 목 / 금 / 토
밑에 날짜를 출력합니다.
그럼 보죠. 그 달의 첫 날이 수요일 이다. 그럼 저희는 3개의 TD 를 그냥 넘어가면 됩니다.
글구 출력할 날이 토요일 이라면 토요일 찍고 행 TR 을 바꾸어 줍니다.
아래는 소스입니다.
그래도 카피하셔서 실행하시면 됩니다. 단 소스파일의 이름은 Diary.asp 로 해주세요.
<%
Option Explicit
'선언되지 않은 변수는 거부한다는 뜻... 꼭 사용하시길 권장합니다.
Dim CurDate '출력할 달의 첫날을 저장합니다.
Dim FirstDay '출력할 달의 첫날이 무슨 요일인지를 숫자값으로 가지고 있습니다.
Dim TotalDay '출력할 달의 총날 수를 가지게 됩니다.
Dim Index '그냥 인덱스임다. For... Next 루프용
CurDate = Request.QueryString("CurDate")
'같은 달만 나오면 재미없음다. 사용자가 선택한 달이 올 수 있도록 배려....
if CurDate = "" Then
CurDate = Date()
else
CurDate = CDate(CurDate)
end if
FirstDay = WeeKDay(Year(CurDate) & "-" & Month(CurDate) & "-" & "01")
TotalDay = DateDiff ("d", CurDate, DateAdd("m", 1, CurDate))
'재미있는 로직임다. 다음 날의 오늘날짜 (2000-11-17) 에서 이번 달의 오늘날짜 (2000-10-17)을 빼면
'이번달(10월)의 날수가 나온다는 초등학교 산수되겠습니다.
Response.Write "<br /><h2 style='' align='center'>" & Year(CurDate) & " 년 " & Month(CurDate) & " 월</h2><hr />"
'년도 월 찍고...
%>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#666666" align="center">
<tr align="center">
<td bgcolor="#cccccc">일</td>
<td bgcolor="#cccccc">월</td>
<td bgcolor="#cccccc">화</td>
<td bgcolor="#cccccc">수</td>
<td bgcolor="#cccccc">목</td>
<td bgcolor="#cccccc">금</td>
<td bgcolor="#cccccc">토</td>
</tr>
<tr bgcolor='#ffffff'>
<%
'해당 요일이 올때까지 빈칸을 생성합니다
For Index = 1 To FirstDay - 1
Response.Write "<td bgcolor='#ffffff'></td>"
Next
'해당 월의 날수 만큼 날짜를 출력합니다.
For Index = 1 To TotalDay
Response.Write "<td bgcolor='#ffffff'>"
Response.Write Index & "<br />"
' 추가시작
dim curent_year, curent_month, curent_day
curent_year = Year(CurDate)
curent_month = int(Month(CurDate))
curent_day = int(Index)
if curent_month < 10 then
curent_month = 0 & curent_month
end if
if curent_day < 10 then
curent_day = 0 & curent_day
end if
Response.Write "<a href='Diary_view.asp?today=" & curent_year & curent_month & curent_day &"&room_idx="& room_idx &"'>"
Response.Write "111"
response.write "</a>"
Response.Write "<br />"
' 추가끝
Response.Write "</td>"
'토요일 찍구 행을 바꾸어줍니다.
If WeekDay(DateAdd("d", Index - 1, FirstDay)) = 7 Then
Response.Write "</tr><tr>"
end if
Next
%>
</tr>
</table>
<br />
<br />
<br />
<table width="100%">
<tr align="center">
<!-- 이전 달의 달력보기 -->
<td><a href="Diary.asp?CurDate=<%=DateAdd("m", -1, CurDate)%>">이전달</a></td>
<!-- 다음 달의 달력보기 -->
<td><a href="Diary.asp?CurDate=<%=DateAdd("m", 1, CurDate)%>">다음달</a></td>
</tr>
</table>
참고자료
http://k.daum.net/qna/view.html?qid=01KwD
댓글목록
등록된 댓글이 없습니다.