알고리즘 & 로직
(알고리즘 & 로직) 날짜 관련 로직
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))