CSV 날짜 03/04, 3월 4일일까 4월 3일일까?
CSV의 03/04/2026은 월/일/년이면 3월 4일, 일/월/년이면 4월 3일입니다. 값이 날짜처럼 보이더라도 원자료의 형식을 확인하기 전에는 의미가 하나로 정해지지 않습니다. 변환에 성공했다는 사실만으로 올바른 날짜가 됐다고 판단하지 마세요.
원인
CSV 날짜는 원문 문자열로 읽을 수 있습니다. 이를 날짜로 해석하는 규칙은 가져오는 프로그램이나 명시한 형식에 따라 달라질 수 있습니다. 이 글에서는 Python datetime.strptime에 형식을 직접 지정해 비교합니다. %d는 일, %m은 월, %Y는 네 자리 연도를 뜻합니다. Python 공식 문서
재현: 형식 확인이 필요한 합성 날짜 3건
합성 날짜 파일은 아래 세 값입니다. 실제 고객 자료가 아닙니다.
| 원문 | 일/월/년으로 읽을 때 | 확인할 점 |
|---|---|---|
| 03/04/2026 | 2026-04-03 | 월/일/년이면 2026-03-04도 가능하므로 원자료 규칙 필요 |
| 13/04/2026 | 2026-04-13 | 13은 월이 될 수 없으므로 이 행은 월/일/년 형식이 아닙니다. 이런 값은 열의 형식을 판단하는 단서가 되지만, 열 전체가 같은 형식이라는 보장은 없습니다. |
| 31/02/2026 | 유효하지 않은 날짜 | 다른 날짜나 빈칸으로 조용히 바꾸지 말고 원문 확인 |
해결: 원문 보존 → 형식 확인 → 실패 항목 분리
먼저 원본을 복사하고, 제공처의 명세나 내보내기 설정에서 날짜 순서를 확인하세요. 이 예제에서는 제공처가 일/월/년이라고 확인했다고 가정한 뒤 변환합니다. 몇 행이 맞아 보인다는 이유로 파일 전체의 형식을 자동 확정하는 예가 아닙니다.
다음 코드는 같은 폴더의 합성 파일을 읽어 첫 값의 두 해석을 비교하고, 일/월/년 규칙으로 각 행을 확인합니다. 원본 파일에 덮어쓰지 않습니다.
import csv
from datetime import datetime
with open('guide-12-dates.csv', encoding='utf-8-sig', newline='') as f:
rows = list(csv.DictReader(f, strict=True))
first = rows[0]['date_text']
print('월/일/년:', datetime.strptime(first, '%m/%d/%Y').date().isoformat())
print('일/월/년:', datetime.strptime(first, '%d/%m/%Y').date().isoformat())
for row in rows:
raw = row['date_text']
try:
value = datetime.strptime(raw, '%d/%m/%Y').date().isoformat()
except ValueError:
value = '원문 확인 필요'
print(row['record_id'], raw, value)
첫 두 출력은 각각 2026-03-04, 2026-04-03입니다. 이후 D01은 2026-04-03, D02는 2026-04-13, D03은 ‘원문 확인 필요’로 표시됩니다. 실패한 행은 삭제하거나 날짜를 추측하지 않고 별도 확인 대상으로 남깁니다. 원자료에 형식이 섞여 있다면 행별 근거를 확보하기 전 일괄 변환하지 마세요.
CSV 도우미와의 연결
CSV 검사기에서 원문 표·열 개수·빈 값을 확인할 수 있습니다. 그러나 이 날짜의 일/월 순서나 달력상 유효성을 판정하는 기능은 아닙니다. 원문을 잘못된 날짜로 바꿨다면 구조 검사를 통과해도 의미는 틀릴 수 있습니다. 날짜 의미를 확인한 뒤 중복 비교나 집계를 진행하세요.
한계
위 세 값의 두 형식 해석·실패 처리와 원본 보존을 로컬 Python으로 확인했습니다. 실제 Excel 날짜 가져오기·자료형·브라우저 화면은 실행하지 않았습니다. Excel이 이 예제와 같은 방식으로 자동 해석한다고 주장하지 않습니다. 시간·시간대·Excel 날짜 일련번호·두 자리 연도·공백 정리·혼합 형식 추론은 범위 밖입니다.
검토일: 2026-10-19. 합성 예제 하나의 본문 코드 출력을 확인했습니다. 전문가 감수나 사람의 실제 Excel 검수를 받았다는 뜻은 아닙니다.
AI 보조 작성: AI로 원고와 합성 자료를 작성하고 로컬 실행 결과를 대조했습니다. 실제 고객 자료는 사용하지 않았습니다.