[오토핫키] 공휴일, 주말을 검사하는 함수 만들기
;공휴일과 일치하는지 검사
CheckHoliday(ToDay)
{
result := false
;음력 명절이나 임시공휴일이 있어서 직접 적어줘야 한다.
;한 자리 숫자는 앞에 0을 붙이면 제대로 작동되지 않음.
Arr := ["2020.12.25.", "2021.1.1.", "2021.2.11.", "2021.2.12.", "2021.2.13.", "2021.2.14.", "2021.3.1.", "2021.5.5.", "2021.5.19.", "2021.6.6.", "2021.8.15.", "2021.9.20.", "2021.9.21.", "2021.9.22.", "2021.10.3.", "2021.10.9.", "2021.12.25."]
Loop % Arr.MaxIndex()
{
if(ToDay = Arr[A_index])
{
result := true
break
}
}
return result
}
;요일이 주말인지 검사
CheckWeekend(uWday)
{
result := false
if(uWday > 7)
{
uWday := mod(uWday, 7) ;8 이상은 나누어서 나머지가 0이나 1이면 토,일요일임
if(uWday = 0 || uWday = 1)
{
result := true
}
}
else
{
if(uWday = 1 || uWday = 7) ;1은 일요일, 7은 토요일
{
result := true
}
}
return result
}
;위 함수들을 이용해서 오늘+추가일 이후가 공휴일,주말이면 그 다음 날을 계산해서 알려줌 (Tab키 사용)
tab::
{
addDD := 56 ;추가되는 날짜
result1 := false
result2 := false
uDay = %A_NOW%
EnvAdd, uDay, addDD, Days
FormatTime, uDay, %uDay%, yyyy.M.d.
Loop
{
uWday := A_WDay + addDD
result1 := CheckWeekend(uWday) ;요일만 따로 체크 합니다. 주말이면 true
if(result1 = false) ;주말이 아닐시 공휴일인지 검사합니다.
{
ToDay = %A_NOW%
EnvAdd, ToDay, addDD, Days
FormatTime, ToDay, %ToDay%, yyyy.M.d.
result2 := CheckHoliday(ToDay) ;공휴일이면 true
}
if(result1 = false && result2 = false) ;주말, 공휴일 둘 다 아니면 검사 종료
{
break
}
addDD := addDD + 1 ;하나라도 만족 못하면 1일 더 추가해서 다시 검사
}
MsgBox, 0, , 지정한 날짜 : %uDay% `n주말&공휴일이 아닌 날짜 : [%ToDay%] (%result1% : %result2%)
return
}