알고리즘 & 로직

(알고리즘 & 로직) 날짜 관련 로직

haramang 2021. 10. 9. 21:53

1. 두 날짜 간 월 차이 계산 공식

종료일자 연도 * 12 + 종료일자 월 - 시작일자 연도 * 12 + 종료일자 월.
예)
DATA: LV_DIFF_MON = ABS( S_DATE-HIGH(4) * 12 + S_DATE-HIGH+4(2) ) -
                               ABS( S_DATE-LOW(4) * 12 + S_DATE-LOW+4(2) ).

 

2. 월 계산

월을 더 했을 때, 12월이 넘을 경우, 현재 값에서 100을 더하고 11을 뺀다.
 * 뺄셈일 경우 100을 빼고 11을 더한다.

IF LV_DATE+4(2) EQ 12.
  LV_DATE = LV_DATE + 100 - 11.
ELSE.
  LV_DATE = LV_DATE + 1.
ENDIF.

 

3. 지난 개월 수 계산

기준 기간이 지난 경우:     현재 월 + (지난년수 X 12) - 기준 월
기준 기간이 안지난 경우:  현재 월 + (지난년수 X 12) - 기준 월 - 1

 

4. 현재일자 요일 계산 공식

출처: https://steemit.com/kr/@mathsolver/22

def date_of_week(Y, M, D):
    # Find m ,c, d
    if int(M) < 3:
        m = int(M) + 10
        d = int(str(int(Y) - 1)[-2:])
        c = int(str(int(Y) - 1)[0:2])
    else:
        m = int(M) -2
        d = int(Y[-2:])
        c = int(Y[0:2])
    # Find k
    k = int(D)
    L = ['Sunday', 'Monday', 'Tuesday', 'Wednesday',
         'Thursday', 'Friday', 'Saturday']
    w = (d + (d//4) + (c//4) + (13*m-1)//5 -2*c + k) % 7
    return 'The date of the week is ' + L[w] + '!'

#-----------------------------------------------------

Y, M, D = input('Enter the date in YYYY/MM/DD form: ').split('/')

print (date_of_week(Y,M,D))