끄적끄적

반응형

 

;윤년인지 아닌지 체크해서 2월 마지막 날짜를 리턴하는 함수

;윤년 = 4로 나누어 떨어지고 100으로 나누어 떨어지지 않는 년도 이거나 400으로 나누어서 떨어지는 년도

;윤년이면 29, 윤년이 아니면 28을 리턴함. (2월의 끝 날짜)

 

CheckLeapMonth(uYear)
{
	if(mod(uYear, 4) = 0 && mod(uYear, 100) != 0 || mod(uYear, 400) = 0)
	{
		return 29	;true		;윤년임, 29일까지
	}
	else
	{
		return 28	;false
	}
}

 

 

 

;연-월-일을 입력하면 1월 1일부터 몇 번째 일인지 계산하는 함수

;1월 1일부터 몇 번째 일인지 계산하는 이유는 일정기간 반복, 주기적으로 반복하는 일정들을 관리하려고 만듬

;eee := DayCount(A_YYYY, A_MM, A_DD)        

;2020, 08, 05 기준 : 결과값 218

 

DayCount(uYear, uMonth, uDay)
{
	Output := 0
	MonCNT := 1

	Loop
	{
		if(uMonth = MonCNT)		;전 달까지만 합산하고 이번달은 오늘 날짜를 더하기 위해서 루프 종료
			break

		if(MonCNT = 1 || MonCNT = 3 || MonCNT = 5 || MonCNT = 7 || MonCNT = 8 || MonCNT = 10 || MonCNT = 12)
			Output := Output + 31
		else if(MonCNT = 4 || MonCNT = 6 || MonCNT = 9 || MonCNT = 11)
			Output := Output + 30
		else if(MonCNT = 2)
			Output := Output + CheckLeapMonth(uYear)

		MonCNT++

	}

	Output := Output + uDay

	return Output
}

 

 

 

;입력받은 총 일수를 '연-월-일'로 표현하는 함수

;uDate := DayReFormat(2020, 218, "-")

;결과값 2020-08-05

 

DayReFormat(uYear, Var, Separator)
{
	uMonth := 1
	uDay := 0	;마지막 일 수를 바로 대입하기 때문에 0으로 초기화
	MonthLastDay := 0
	
	MonCNT := 1
		
	Loop
	{
		;각 달의 마지막 일 수를 구하고
		if(MonCNT = 1 || MonCNT = 3 || MonCNT = 5 || MonCNT = 7 || MonCNT = 8 || MonCNT = 10 || MonCNT = 12)
			MonthLastDay := 31
		else if(MonCNT = 4 || MonCNT = 6 || MonCNT = 9 || MonCNT = 11)
			MonthLastDay := 30
		else if(MonCNT = 2)
			MonthLastDay := CheckLeapMonth(uYear)
		
		if(Var > MonthLastDay)		;월, 일 수 만큼 더하고, 총일수는 빼주고
		{
			uMonth++
			
			if(uMonth > 12)			;12월이 넘어가면 년을 추가하고 월을 1로 바꿔준다.
			{
				uYear := uYear + 1
				uMonth := 1
			}
			
			Var := Var - MonthLastDay
		}
		else			; 총일수가 더 적으면 그냥 날짜에 더해주고 루프를 빠져나온다.
		{
			uDay := Var
			break
		}
		
		MonCNT++
	}
	
	;Output := uYear . Separator . uMonth . Separator . uDay	  ;연-월-일 형식을 만들어서 리턴
	Output := uYear . Separator . FormatChange("num", uMonth) . Separator . FormatChange("num", uDay)	  ;연-월-일 형식을 만들어서 리턴
	
	return Output	
}

 

 

;00~09까지 문자로 된 숫자들을 1자리 숫자 0~9로 만들고, 0~9 1자리 숫자들을 00~09 2자리 문자형식의 숫자로 만드는 함수

;FormatChange("str", "08")        ;결곽값 8

;FormatChange("num", 5)        ;결과값 05

 

FormatChange(InputType, Var)
{
	if(InputType = "str")
	{
		StringLeft, tempVar, Var, 1		;앞자리가 0인지 확인하기 위해서 앞자리 추출
		
		if(tempVar = "0")
			StringMid, OutputVar, Var, 2, 1	;뒷자리만 뽑아서 저장
		else
			OutputVar := Var	;2자리 숫자부터는 앞에 0이 없어도 되기 때문에 그대로 넣어준다.
	}
	else if(InputType = "num")
	{
		StringLen, DataLen, Var
		
		if(DataLen < 2) 
			OutputVar := "0" . Var
		else
			OutputVar := Var	;2자리 숫자부터는 앞에 0이 없어도 되기 때문에 그대로 넣어준다.		
	}
	else
	{
		MsgBox, 0, , 함수 호출 오류 1642
	}

	return OutputVar
}

 


 

 

[오토핫키] 공휴일, 주말을 검사하는 함수 만들기

https://weezzle.tistory.com/1497

반응형
Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]