에듀테크 프로젝트 대시보드
날짜와 시간
datetime 모듈의 date·time·datetime·timedelta 네 가지가 핵심.
from datetime import datetime, date, time, timedelta
datetime.now() # 로컬 현재 시각
date.today() # 오늘 날짜
datetime(2024, 1, 15, 14, 30)
date(2024, 1, 15)
now = datetime.now()
now.year, now.month, now.day, now.hour
now.weekday() # 월=0 … 일=6
now.date(); now.time()dt = datetime.strptime("2024-01-15 14:30", "%Y-%m-%d %H:%M") # 파싱
dt.strftime("%Y년 %m월 %d일 (%a)") # 포맷
datetime.now().isoformat() # '2024-01-15T14:30:00.123'
datetime.fromisoformat("2024-01-15T14:30:00")
date.today().strftime("%Y%m%d") # => '20240115' | 코드 | 의미 | 예 |
|---|---|---|
%Y / %y | 연도 4자리 / 2자리 | 2024 / 24 |
%m %d | 월 / 일 (0채움) | 01 15 |
%H %M %S | 시(24) 분 초 | 14 30 00 |
%I %p | 시(12) / AM·PM | 02 PM |
%A %a | 요일 전체 / 축약 | Monday / Mon |
%j | 연중 일수 | 015 |
from datetime import timedelta
now = datetime.now()
tomorrow = now + timedelta(days=1)
last_week = now - timedelta(weeks=1)
deadline = now + timedelta(hours=3, minutes=30)
diff = deadline - now # timedelta
diff.days
diff.total_seconds() # 전체 초 (float)
# 두 날짜 사이 일수
(date(2024, 12, 31) - date(2024, 1, 1)).days # => 365from datetime import datetime, timezone
from zoneinfo import ZoneInfo # 3.9+
utc_now = datetime.now(timezone.utc) # aware datetime
seoul = utc_now.astimezone(ZoneInfo("Asia/Seoul"))
ny = seoul.astimezone(ZoneInfo("America/New_York"))
# naive (tz 정보 없음) vs aware — 섞어서 빼면 TypeError
dt = datetime(2024, 1, 1, tzinfo=ZoneInfo("Asia/Seoul"))import time
time.time() # Unix epoch 초 (float)
time.sleep(0.5) # 0.5초 대기
start = time.perf_counter() # 고해상도 (경과 측정 전용)
do_work()
elapsed = time.perf_counter() - start
time.strftime("%Y-%m-%d", time.localtime())ts = datetime.now().timestamp() # datetime → epoch
datetime.fromtimestamp(ts) # epoch → 로컬 datetime
datetime.fromtimestamp(ts, timezone.utc) # epoch → UTC datetime