Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 날짜 유효성 검사 후 하루 증가된 날짜 출력하기

입력받은 날짜가 실제로 존재하는 유효한 날짜인지 검사하고, 유효하다면 하루 증가된 날짜를 출력해야 하는 경우 'if' 조건문을 활용할 수 있습니다.

아래는 그 구현 예시입니다.

예제 코드

my_date = input("Enter a date : ")
dd,mm,yy = my_date.split('/')
dd=int(dd)
mm=int(mm)
yy=int(yy)
if(mm==1 or mm==3 or mm==5 or mm==7 or mm==8 or mm==10 or mm==12):
    max_val = 31
elif(mm==4 or mm==6 or mm==9 or mm==11):
    max_val = 30
elif(yy%4==0 and yy%100!=0 or yy%400==0):
    max_val = 29
else:
    max_val = 28
if(mm<1 or mm>12 or dd<1 or dd> max_val):
    print("The date is invalid")
elif(dd==max_val and mm!=12):
    dd=1
    mm=mm+1
    print("The incremented date is : ",dd,mm,yy)
elif(dd==31 and mm==12):
    dd=1
    mm=1
    yy=yy+1
    print("The incremented date is : ",dd,mm,yy)
else:
    dd=dd+1
    print("The incremented date is : ",dd,mm,yy)

실행 결과

Enter a date : 5/07/2021
The incremented date is : 6 7 2021

코드 설명

  • 날짜를 사용자 입력으로 받습니다.

  • '/' 기호를 기준으로 문자열을 분리하여 일(dd), 월(mm), 연도(yy)로 나눕니다.

  • 분리된 값들은 산술 연산을 위해 각각 정수형으로 변환됩니다.

  • 첫 번째 'if' 조건문에서는 월별 최대 일수를 결정합니다. 1, 3, 5, 7, 8, 10, 12월은 31일까지 있고, 4, 6, 9, 11월은 30일까지 있습니다.

  • 두 번째 조건문에서는 윤년 규칙(4로 나누어 떨어지고 100으로 나누어 떨어지지 않거나, 400으로 나누어 떨어지는 해)을 적용하여 2월의 최대 일수를 29일 또는 28일로 설정합니다.

  • 이후 월 범위와 일 범위가 올바른지 검사하여 잘못된 날짜인 경우 오류 메시지를 출력합니다.

  • 날짜가 유효하다면 해당 월의 마지막 날인지 확인합니다. 월말이면 일과 월을 초기화하고 월을 1 증가시키며, 12월 31일이라면 연도까지 1 증가시킵니다.

  • 그 외의 경우에는 단순히 일(day)만 1 증가시킨 후 결과를 콘솔에 출력합니다.

참고: datetime 모듈 활용하기

조건문 없이 파이썬 표준 라이브러리인 datetime 모듈을 사용하면 더 간결하게 처리할 수 있습니다. datetime.strptime()으로 날짜 형식을 검증하고, timedelta(days=1)을 더하면 자동으로 다음 날짜가 계산되며 윤년 처리도 내부적으로 수행됩니다.