'====================================
Description : 주의시작은 일요일이라 가정한다
'====================================
'-- 해당날짜에 해당하는 날짜의 일요일과 토요일날짜 구해옴( 형식 chkdate : 2009-01-01)
FUNCTION week_day(chkdate)
SELECT CASE weekday(CDate(chkdate))
CASE 1 : temp1 = CDate(chkdate) - 0 : temp2 = CDate(chkdate) + 6 '일
CASE 2 : temp1 = CDate(chkdate) - 1 : temp2 = CDate(chkdate) + 5 '월
CASE 3 : temp1 = CDate(chkdate) - 2 : temp2 = CDate(chkdate) + 4 '화
CASE 4 : temp1 = CDate(chkdate) - 3 : temp2 = CDate(chkdate) + 3 '수
CASE 5 : temp1 = CDate(chkdate) - 4 : temp2 = CDate(chkdate) + 2 '목
CASE 6 : temp1 = CDate(chkdate) - 5 : temp2 = CDate(chkdate) + 1 '금
CASE 7 : temp1 = CDate(chkdate) - 6 : temp2 = CDate(chkdate) + 0 '토
END SELECT
week_day = temp1 &"|"& temp2
END FUNCTION
'-- 현재일의 주차
FUNCTION now_week(getdate)
now_week = int((Day(getdate) - weekday(getdate)+13)/7)
END FUNCTION
'-- 해당달의 마지막일
FUNCTION last_day(year,month)
temp = CDate(LEFT(dateadd("m",1,year &"-"& month &"-01"),7) &"-01")-1
last_day = Split(temp,"-")(2)
END FUNCTION
'-- 현재월의 주차( 형식 getdate : 2009-01-01)
FUNCTION now_week(getdate)
now_week = int((Day(getdate) - weekday(getdate)+13)/7)
END FUNCTION
'-- 해당년의 전달까지의 주차수
FUNCTION month_week(year, month)
week = 0
FOR i = 1 TO month - 1
week = week + now_week(year &"-"& i &"-"& last_day(year,i))
NEXT
month_week = week
END FUNCTION
'-- 해당년의 주차수의 일요일(안됨;;)
FUNCTION week_sunday(year,week)
week_sunday = CDate(year &"-01-01")+(week-1)*7+1-WEEKDAY(CDate(year& "-01-01")+(week-1)*7)
END FUNCTION
'-- 해당년의 주차수의 일요일(형식 now_month_week("2009","02","2") : 2009년2월2주차)
FUNCTION now_month_week(year,month,week_cnt)
a = CDate(year &"-01-01") '-- 시작기준일
b = Datepart("ww",year &"-"& month &"-01",1,3) '-- 해당월의 시작일의 주차
c = 7 * b '--7에 주차를 곱하면 몇일 뒤 인지 나옴
d = DateAdd("d",c,a) '--시작기준일에서 날짜를 c 만큼 더해준다
'-- 해당월의 시작일이 일요일이면 첫주이므로 원하는주차에서 7을 빼준다.
IF weekday(year &"-"& month &"-01") = 1 THEN
d = CDate(d) + (7 * week_cnt) - 7
ELSE
d = CDate(d) + (7 * week_cnt)
END IF
now_month_week = d
END FUNCTION
function num_Week(arg_num)
Select Case arg_num
Case 1
we = "일요일"
Case 2
we = "월요일"
Case 3
we = "화요일"
Case 4
we = "수요일"
Case 5
we = "목요일"
Case 5
we = "금요일"
Case 7
we = "토요일"
End Select
num_Week = we
end function
function Now_Week() "오늘의 요일
MyWeekDay = Weekday (Now())
Now_Week = num_Week(MyWeekDay)
end function
function first_Week() "이번달 1일의 요일
MyWeekDay = Weekday(DateAdd("d",1-day(now()), now()) )
first_Week = num_Week(MyWeekDay)
end function
function Count_Week() "오늘이 몇주차?
"2째주 일요일 찾기
se_sun = 9 - Weekday(DateAdd("d", 1-day(now()), now()))
"2째주 일요일보다 작은 경우 오늘은1주차
if cint(se_sun) > cint(day(now())) then
Count_Week = 1
else "2주이상
"남은 날짜 계산
mod_day = cint(day(now()) - se_sun + 1)
" 남은 날짜를 7로 나눈 나머지가 0이면 몫을사용 아니면 몫+1 한다.
if (mod_day mod 7) = 0 then
Count_Week = (mod_day / 7) + 1 "1주차를 더한다
else
Count_Week = int(mod_day / 7) + 2 "1주차와 마지막주를 더한다 합이 2주
end if
end if
end function
댓글 없음:
댓글 쓰기