본문으로 건너뛰기

교육 ·

비전공자 파이썬 날짜 다루는 법, datetime부터 시작하세요

비전공자 파이썬 날짜 다루는 법이 막막하게 느껴지는 이유는 엑셀에서는 셀 서식만 바꾸면 되던 일이, 파이썬에서는 문자열인지 날짜인지부터 헷갈리기 때문입니다. 결론부터 말하면 파이썬에서 날짜를 다루는 핵심은 datetime 모듈 하나만 제대로 이해하면 됩니다. 문자열로 된 날짜를 진짜 날짜 객체로 바꾸고, 날짜끼리 계산하고, 원하는 형식으로 다시 출력하는 세 가지 동작만 익히면 실무에서 마주치는 날짜 관련 반복 업무는 거의 다 해결됩니다.

실무에서 날짜 데이터를 다루는 상황은 생각보다 많습니다. 매월 보고서에서 “이번 달에 등록된 항목만 뽑기”, 계약서 목록에서 “만료 30일 전인 것만 골라내기”, 여러 파일에서 날짜 형식이 제각각일 때 “2026-07-22”와 “2026/07/22”와 “26.7.22”를 통일하는 작업이 대표적입니다. 이런 일을 엑셀 함수로 하려면 TEXT, DATEVALUE, IF를 겹겹이 써야 하지만, 파이썬으로는 몇 줄이면 끝납니다.

파이썬에서 날짜를 어떻게 다루나요

파이썬에서 날짜는 문자열이 아니라 datetime 객체로 다뤄야 계산과 비교가 가능합니다. 문자열 “2026-07-22”는 사람 눈에는 날짜처럼 보여도 파이썬은 그냥 글자로 인식하기 때문에, 날짜 계산을 하려면 반드시 datetime.strptime()으로 먼저 변환해야 합니다. 변환이 끝나면 뺄셈, 비교, 형식 출력이 모두 자연스럽게 됩니다.

from datetime import datetime

# 문자열 -> 날짜 객체로 변환
text = "2026-07-22"
date_obj = datetime.strptime(text, "%Y-%m-%d")

print(date_obj)          # 2026-07-22 00:00:00
print(type(date_obj))    # <class 'datetime.datetime'>

여기서 %Y-%m-%d는 원본 문자열이 어떤 순서로 되어 있는지 알려주는 “형식 지정자”입니다. 연도는 %Y, 월은 %m, 일은 %d로 표시하며, 원본 문자열의 구분자(하이픈, 슬래시 등)와 순서를 그대로 맞춰줘야 오류 없이 변환됩니다.

오늘 날짜 가져오고 형식 바꾸기

업무에서 가장 많이 쓰는 패턴은 오늘 날짜를 가져와서 파일명이나 보고서 제목에 넣는 일입니다.

from datetime import datetime

today = datetime.now()
print(today.strftime("%Y%m%d"))       # 20260722
print(today.strftime("%Y년 %m월 %d일"))  # 2026년 07월 22일

strftime()strptime()과 반대 역할을 합니다. strptime은 문자열을 날짜로 “읽어 들이는” 함수이고, strftime은 날짜를 원하는 문자열 “형식으로 출력하는” 함수입니다. 두 함수 이름이 비슷해서 헷갈리기 쉬운데, p는 parse(해석), f는 format(형식)으로 기억하면 구분하기 편합니다.

날짜끼리 계산하기 - 며칠 남았는지, 며칠 지났는지

계약 만료일이나 마감일 관리에서 자주 필요한 계산입니다. 날짜 두 개를 빼면 timedelta 객체가 나오고, 여기서 .days를 꺼내면 정수로 된 일수를 얻을 수 있습니다.

from datetime import datetime

today = datetime.now()
deadline = datetime.strptime("2026-08-31", "%Y-%m-%d")

remaining = deadline - today
print(f"마감까지 {remaining.days}일 남았습니다.")

반대로 특정 날짜에서 며칠을 더하거나 빼는 것도 timedelta로 처리합니다.

from datetime import datetime, timedelta

start = datetime.strptime("2026-07-22", "%Y-%m-%d")
due = start + timedelta(days=30)
print(due.strftime("%Y-%m-%d"))  # 30일 후 날짜

계약서나 발주 목록처럼 여러 건의 만료일을 한꺼번에 점검해야 한다면, pandas와 조합해서 “30일 이내 만료 항목만” 걸러내는 식으로 확장할 수 있습니다. 이런 목록 관리에 익숙해지면 엑셀 반복 업무를 파이썬으로 자동화하는 방법과 자연스럽게 이어집니다.

파이썬 날짜 처리 핵심 3가지

여러 파일에서 날짜 형식이 다를 때

관공서나 거래처마다 날짜 표기 방식이 다른 경우가 흔합니다. “2026-07-22”, “2026.07.22”, “26/07/22”가 섞여 있으면 엑셀에서는 하나씩 손으로 고쳐야 하지만, 파이썬에서는 형식 후보를 여러 개 만들어두고 순서대로 시도하는 방식으로 처리할 수 있습니다.

from datetime import datetime

def parse_date(text):
    formats = ["%Y-%m-%d", "%Y.%m.%d", "%y/%m/%d"]
    for fmt in formats:
        try:
            return datetime.strptime(text, fmt)
        except ValueError:
            continue
    return None  # 어떤 형식과도 안 맞으면 None 반환

samples = ["2026-07-22", "2026.07.22", "26/07/22", "이상한값"]
for s in samples:
    result = parse_date(s)
    print(s, "->", result)

이 코드는 try-except로 형식이 안 맞을 때 에러가 나도 프로그램이 멈추지 않게 처리합니다. 이런 예외처리 방식이 익숙하지 않다면 비전공자를 위한 파이썬 예외처리 배우는 법을 먼저 살펴보시면 이해가 빨라집니다. 또한 날짜 형식이 워낙 다양하고 지저분하다면, 정규표현식으로 숫자 패턴만 먼저 뽑아내는 방법도 있는데, 이는 정규표현식 입문 가이드에서 다루고 있습니다.

요일과 월 이름까지 다루기

보고서에 “월요일”, “7월”처럼 요일과 월 이름을 넣어야 할 때도 strftime의 형식 지정자로 해결됩니다.

from datetime import datetime

date_obj = datetime.strptime("2026-07-22", "%Y-%m-%d")
print(date_obj.strftime("%A"))   # Wednesday (영문 요일)
print(date_obj.weekday())        # 2 (월요일=0 기준)

한글 요일이 필요하다면 리스트를 하나 만들어 weekday() 결과와 짝지어주는 방식을 씁니다.

weekdays_kr = ["월", "화", "수", "목", "금", "토", "일"]
print(weekdays_kr[date_obj.weekday()])  # 수

정리

파이썬 날짜 처리는 strptime(문자열을 날짜로 읽기), strftime(날짜를 문자열로 출력), timedelta(날짜 간 계산) 이 세 가지 도구의 조합으로 거의 모든 실무 상황을 해결할 수 있습니다. 처음에는 형식 지정자(%Y, %m, %d)를 외우는 게 번거롭게 느껴지지만, 몇 번 써보면 엑셀 함수 조합보다 오히려 더 직관적으로 느껴지는 경우가 많습니다. 날짜 데이터를 다루는 스크립트가 익숙해지면, 그다음 단계로 pandas를 활용한 데이터 정리나 시각화로 자연스럽게 확장할 수 있습니다.

픽셀앤코드는 경기 양주 지역을 중심으로 비전공 실무자를 위한 파이썬·자동화 교육을 진행하고 있습니다. 날짜 계산이나 반복되는 문서 작업처럼 실제 업무에서 막히는 지점을 예제로 삼아 진행하기 때문에, 배운 내용을 곧바로 현업에 적용할 수 있다는 점이 특징입니다.