아는 것이 좋은 것이다.

[ASP] 달력 생성 소스 (공휴일 추가가능) 본문

ASP

[ASP] 달력 생성 소스 (공휴일 추가가능)

start0 2014. 4. 27. 12:47
<%Option Explicit%>
<%
'변수 정의 // 상단의 옵션 사용시 정의되지 않은 변수는 오류를 발생시킵니다
Dim nowDay, nowDate, nowMonth, nowYear
Dim firstDay, firstDayFlag, dates, i, j, today, hday
Dim py, pm, pd, ny, nm, nd
Dim showprev, shownext, btn_prev, btn_next
Dim days, months, days_color, days_bg
Dim holiday(13, 32), gPathinfo
gPathinfo = Request.ServerVariables("PATH_INFO")
Dim cW, dH

'---------------------------------------------------------------------------
' 사용자 정의 값 // 추가, 수정, 삭제 가능
'---------------------------------------------------------------------------

  cW = 200 ' 달력 전체의 width 값 설정
dH = 25  ' 달력 한칸의 height 값 설정

'공휴일 설정(월, 일)
  holiday(1,1) = "신정"
  holiday(1,2) = " "  '신정연휴
holiday(3,1) = "삼일절"
  holiday(5,5) = "어린이날"
  holiday(6,6) = "현충일"
  holiday(8,15) = "광복절"
  holiday(10,3) = "개천절"
  holiday(12,25) = "성탄절"


  '요일, 글자색, 배경색
days = Array("0", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat")
  days_color = Array("0", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF")
  days_bg = Array("0", "#ffcc00", "0066cc", "0066cc", "0066cc", "0066cc", "0066cc", "999999")

'월 표시문구
months = Array("0", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")

'---------------------------------------------------------------------------
' 사용자 정의 값
'---------------------------------------------------------------------------


'---------------------------------------------------------------------------
' 필수 설정 값
'---------------------------------------------------------------------------
'이전달 다음달 선택한경우 값 받기
nowYear = Request("y")
  nowMonth = Request("m")
  nowDate = Request("d")

'오늘의 요일, 년, 월, 일
If nowYear = "" And nowMonth = "" Then
   nowDay = Weekday(now)
   nowYear = Year(now)
   nowMonth = Month(now)
   nowDate = Day(now)
  End If

'이번달 1일의 요일구하기
firstDay  = WeekDay(DateSerial(nowYear,nowMonth,1)) - 1 ' 이번달 1일의 요일 1~7 일~토

'윤년일경우 2월달 29일까지표시
If nowYear Mod 4 <> 0 Then
   dates = Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
  Else
   dates = Array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
  End If

'첫번째날 시작을 체크하기위한 값
firstDayFlag = 0

'이전달 다음달
py = nowYear
  pm = nowMonth -1
  ny = nowYear
  nm = nowMonth + 1
  showprev = pm&"월"
  shownext = nm&"월"
  If nowMonth = 1 Then
   py = nowYear -1
   pm = 12
   showprev = py&"년 "&pm&"월"
  End If
  If nowMonth = 12 Then
   ny = nowYear + 1
   nm = 1
   shownext = ny&"년 "&nm&"월"
  End If
'---------------------------------------------------------------------------
' // 필수 설정 값
'---------------------------------------------------------------------------
%>

<html>
<head>
  <title> ASP - 달력 </title>
  <style type="text/css">
   td, tr, table {
    font-size : 12px;
    color : #000000;
   }
   a:link { text-decoration: none; color: #666666;  }
   a:visited { text-decoration: none; color: #666666; }
   a:hover {  text-decoration: none; color:#000000; }
  </style>
</head>
<body>

<%
'-----------------------------------------------------------------------------------
' 현재 년, 월 표시
'-----------------------------------------------------------------------------------
%>
  <table width="<%=cW%>" border="3" align="center" cellspacing="0" cellpadding="5">
   <tr>
    <td align="left" width="<%=cW%>" style="border:0 0 0 0"><b>
     <%=nowYear%>-<%=nowMonth%>&nbsp;<%=months(nowMonth)%>
    </td>
   </tr>
  </table>
<%
'-----------------------------------------------------------------------------------
' // 현재 년, 월 표시
'-----------------------------------------------------------------------------------


'테두리
%>
  <table width='<%=(cW-6)%>' border='3' cellspacing='0' cellpadding='0' align='center' valign='middle' style='margin-top:2'>
  <tr>
  <td style='border:0 0 0 0'><%'테두리 보더%>
  <table width='<%=(cW-6)%>' border='0' cellspacing='1' cellpadding='0' bgcolor='#EFEFEF' align='center' valign='middle'>
<%
'-----------------------------------------------------------------------------------
' 요일 타이틀 표시
'-----------------------------------------------------------------------------------
%>
  <tr bgcolor='#FFFFFF'>
  <%
  For i=1 To 7
  %>
   <td align="center" valign="middle" width="80" height="23" bgcolor="<%=days_bg(i)%>">
   <font color="<%=days_color(i)%>"><%=days(i)%></font>
   </td>
  <%
  Next
  %>
  </tr>
  <%
'-----------------------------------------------------------------------------------
' // 요일 타이틀 표시
'-----------------------------------------------------------------------------------

'-----------------------------------------------------------------------------------
' 날짜 표시
'-----------------------------------------------------------------------------------
%>
  <tr bgcolor='#FFFFFF'>
  <%

i = 1 '날짜 표시용 변수
j = 1 '요일계산용 변수

Do While i <= dates(nowMonth)  '이번달 일수만큼 i증가 반복

  '이번달 1일에 맞는 요일이되면 플래그값 변경
  If firstDay+1 = j Then
    firstDayFlag = 1
   End If

  '요일 플래그값이 1이면 날짜 표시 시작
  If firstDayFlag = 1 Then
    hday = ""
    today = i
    '오늘날짜 굵게표시
   If i = CInt(nowDate) Then
     today = "<b>" & i & "</b>"
    End If
   
    '일, 토요일 색 표시 (공휴일도)
    If j Mod 7 = 1 Or holiday(nowMonth, i) <> "" Then
     hday = holiday(nowMonth, i)
     today = "<font color='red'>" & today & "</font>"
    ElseIf j Mod 7 = 0 Then
     today = "<font color='blue'>" & today & "</font>"
    End If
    %> 
    <td valign="top" onMouseOver="this.style.background='#EFFFEF'" onMouseOut="this.style.background='#FFFFFF'" height="<%=dH%>">
    <%=today%><span style="font-size:11px;font-family:궁서"><%=hday%></span>
    </td>
    <%
    i = i + 1

  '요일 플래그값이 0이면 빈칸
  Else
   %>
    <td>&nbsp;</td>
   <%
   End If

  If i <= dates(nowMonth) Then
    '일주일마다 줄바꿈
   If j Mod 7 = 0 Then
    %>
     </tr><tr bgcolor='#FFFFFF'>
    <%
    End If
   End If
  
   j = j + 1

Loop

'마지막날이 토요일이 아닐경우 토요일까지 반복
Do Until j Mod 7 = 1
  %>
    <td>&nbsp;</td>
  <%
    j = j + 1
  Loop
  %>
  </tr>
  </td></tr>
  <%

'-----------------------------------------------------------------------------------
' // 날짜 표시 끝
'-----------------------------------------------------------------------------------
%>
</table>
</td></tr></table><%'테두리 보더%>

<%
'-----------------------------------------------------------------------------------
' 이전, 다음 버튼 표시
'-----------------------------------------------------------------------------------
btn_prev = "<span style='font-size:10px'><</span>"  ' 이전 버튼, 이미지로 교체 가능
btn_next = "<span style='font-size:10px'>></span>"  ' 다음 버튼, 이미지로 교체 가능

%>

<table width="<%=cW%>" border="3" align="center" cellspacing="0" cellpadding="5" style="margin-top:2">
  <tr>
  <td align="center" width="<%=cW%>" style="border:0 0 0 0">
   <b><a href="<%=gPathinfo%>?y=<%=(nowYear-1)%>&m=<%=nowMonth%>"><span style="font-size:11px"><%=btn_prev & btn_prev%></span></a>
   <a href="<%=gPathinfo%>?y=<%=py%>&m=<%=pm%>"><span style="font-size:11px"><%=btn_prev%></span></a>
   <a href="<%=gPathinfo%>">Today</a>
   <a href="<%=gPathinfo%>?y=<%=ny%>&m=<%=nm%>"><span style="font-size:11px"><%=btn_next%></span></a>
   <a href="<%=gPathinfo%>?y=<%=(nowYear+1)%>&m=<%=nowMonth%>"><span style="font-size:11px"><%=btn_next & btn_next%></span></a>
  </td>
  </tr>
  </table>

<%
'-----------------------------------------------------------------------------------
' // 이전, 다음 버튼 표시 끝
'-----------------------------------------------------------------------------------
%>
</body>
</html>

'ASP' 카테고리의 다른 글

[ASP] 한글 깨짐 변환  (1) 2014.04.30
[ASP] 다운로드 페이지 프로그램  (0) 2014.04.30
[ASP] 파일이동, 폴더이동, 파일삭제  (0) 2014.04.27
[ASP] 클래스로 xml 생성  (0) 2014.04.24
[ASP] 중복 조회수 처리  (0) 2014.04.24
Comments