본문 바로가기
Developer/asp

가장 심플한 VB 달력 알고리즘 , 달력 개발

by MindOpener 2019. 1. 16.
반응형

달력을 구현해야 할 일이 생겻다. 



몇 개의 포스트를 검색하면서 아 이거 쉽지 않겟구나. 윤년에 , 요일에 ..등등... 


한참 고민하다... 그런것 계산 없이 


쉽게 만들 수도 있겟다는 생각이 들었다. 


대략 소스는 아래로 했다. 


필요한 변수는 오늘 기준일, 기준 년, 월과  클릭시 넘겨 받을 년, 월  그리고 


그달 1일, 마지막일,   달력 앞 뒤 공백요일 값을 셀 시작 요일값, 마지막일 요일값 ,  요일을 체크하기위한 상태변수  등이 필요했다.  




dim today, current_mm, current_yy , yy,mm ,signDate ,lastDay, startWeekDay, lastWeekDay, weekChk

' 현재일
today = date()
' 현재 일에서 년, 월 추출
current_yy = year(today)
current_mm = month(today)


'변수로 넘겨 받을 시의 년 월,
yy = request("yy")
mm = request("mm")

' 받는 값이 없을시 현재값 배정
if yy = "" then yy = current_yy
if mm = "" then mm = current_mm
'달력 기준일 1일 만들기
signDate = CDate(yy&"-"&mm&"-1")
'1일의 요일 구하기
startWeekDay = weekday(signDate)
'기준일의 마지막 날짜 구하기
'기준일 다음달 1일에서 하루를 뺀 날자가 마지막 날이 된다.
lastDay = dateAdd("d",-1,dateAdd("m",1,signDate))
'마지막 날짜 요일 구하기 - 다음달 공백 처리 위해 .
lastWeekDay = weekday(lastDay)
%>

<< < <%=yy%> <%=mm%> > > >> <br>

일 월 화 수 목 금 토 <br>
</div>

<%
'vb에서 일요일은 1부터 시작 일 월 화 ; 1,2,3
weekChk = 0
'당일이 일요일이 아니면 공백 요일 출력
if startWeekDay > 1 then
for jj = 1 to startWeekDay -1
response.write "ㅁ"
weekChk = weekChk + 1
next
end if

' 달력 시작 ..
for i = 1 to day(lastDay) step 1 '일간 반복

response.write i
%>

<% ' 토요일이면 줄 바꿈 처리 . 일요일로 설정.
weekChk = weekChk + 1
if weekChk > 6 then ' 일요일 이면
response.write "<br>"
weekChk = 0
end if
next
' 다음달 공백 처리
if lastWeekDay < 7 then
for jj =lastWeekDay+1 to 7 step 1
response.write "ㅁ"
next
end if


반응형