-
[Python] datetime + time: 날짜·시간 처리 베스트 프랙티스업무 자동화/Python 2025. 12. 5. 13:29
1. datetime 기본
from datetime import datetime, date, time, timedelta1-1. 현재 날짜와 시각
from datetime import datetime, date now = datetime.now() today = date.today() print(now) # 2025-12-02 13:45:00.123456 print(today) # 2025-12-021-2. 특정 날짜/시간 만들기
from datetime import datetime, date, time d = date(2025, 12, 25) t = time(14, 30, 0) dt = datetime(2025, 12, 25, 14, 30, 0)2. 날짜/시간 덧셈·뺄셈: timedelta
from datetime import datetime, timedelta now = datetime.now() tomorrow = now + timedelta(days=1) one_hour_ago = now - timedelta(hours=1) print(tomorrow) print(one_hour_ago)주요 인자:
days,seconds,microsecondsmilliseconds,minutes,hours,weeks
예시: 비밀번호 만료 일자 계산
from datetime import datetime, timedelta created_at = datetime.now() expire_at = created_at + timedelta(days=90) print("만료일:", expire_at)3. 문자열 ↔ datetime 변환 (포맷팅/파싱)
3-1. datetime → 문자열: strftime
from datetime import datetime now = datetime.now() print(now.strftime("%Y-%m-%d %H:%M:%S")) # 2025-12-02 13:45:30 print(now.strftime("%Y%m%d")) # 20251202 print(now.strftime("%Y-%m-%d(%a)")) # 2025-12-02(Tue)자주 쓰는 포맷 코드:
%Y: 4자리 연도 (2025)%m: 2자리 월 (01~12)%d: 2자리 일 (01~31)%H: 24시간제 시각 (00~23)%M: 분 (00~59)%S: 초 (00~59)%a: 요일 약어 (Mon, Tue, ...)
3-2. 문자열 → datetime: strptime
from datetime import datetime s = "2025-12-02 13:45:30" dt = datetime.strptime(s, "%Y-%m-%d %H:%M:%S") print(dt, type(dt))- 문자열 포맷과
strptime포맷 문자열이 정확히 일치해야 합니다.
4. timestamp(UNIX 시간) 다루기
4-1. datetime → timestamp
from datetime import datetime now = datetime.now() ts = now.timestamp() print(ts) # 예: 1764657930.1234564-2. timestamp → datetime
from datetime import datetime ts = 1764657930 dt = datetime.fromtimestamp(ts) print(dt)- timestamp는 보통 UTC 기준 초 단위 부동소수점
5. time 모듈: sleep, 실행 시간 측정
import time print(time.time()) # 현재 시각(UNIX timestamp, float 초)5-1. sleep – 특정 시간 대기
import time print("시작") time.sleep(2) # 2초 대기 print("끝")5-2. 실행 시간 측정
import time start = time.perf_counter() # 실행하고 싶은 코드 total = 0 for i in range(1_000_000): total += i end = time.perf_counter() print("실행 시간:", end - start, "초")perf_counter(): 성능 측정용 고해상도 타이머
6. 실무 예시
6-1. 날짜 기반 로그 파일 이름 만들기
from datetime import datetime from pathlib import Path today = datetime.now().strftime("%Y%m%d") log_dir = Path("logs") log_dir.mkdir(exist_ok=True) log_path = log_dir / f"app_{today}.log" print("로그 파일:", log_path)6-2. N일 이상 지난 파일 삭제
from datetime import datetime, timedelta from pathlib import Path days = 30 threshold = datetime.now() - timedelta(days=days) log_dir = Path("logs") for path in log_dir.glob("*.log"): mtime = datetime.fromtimestamp(path.stat().st_mtime) if mtime < threshold: print("삭제:", path) path.unlink()6-3. “남은 시간” 표시
from datetime import datetime, timedelta deadline = datetime(2025, 12, 31, 23, 59, 59) now = datetime.now() remain = deadline - now print("남은 일수:", remain.days) print("총 남은 초:", remain.total_seconds())'업무 자동화 > Python' 카테고리의 다른 글
[Python] logging + argparse: 실무형 CLI 스크립트 패턴 (0) 2025.12.07 [Python] json + csv: 데이터 포맷 기본과 파이썬 처리 패턴 (0) 2025.12.06 [Python] collections + itertools: 코딩테스트·실무에 유용한 도구 모음 (0) 2025.12.04 [Python] 파일·폴더 자동화: os + shutil + glob 핵심 정리 (0) 2025.12.03 [Python] random 함수 정리: 난수 생성, 샘플링, 셔플 핵심 사용법 (0) 2025.12.01