1. 현재 날짜와 시간 가져오기
왜 필요할까?
다들 알다시피, 시간은 돈이야. 프로그래밍에서는 시간은 관리, 계획, 자동화를 의미하지. 예를 들어, 특정 시간에 작업을 실행하거나 이벤트를 기록하고 싶다면, 시계가 어떻게 돌아가는지 알 필요가 있어.
datetime 기본
자, 이제 datetime 라이브러리로 작업을 시작한다고 상상해봐. 우주선 설계보다 훨씬 쉬워! 자, 현재 날짜와 시간을 가져오는 방법부터 시작하자:
from datetime import datetime
# 현재 날짜와 시간 가져오기
now = datetime.now()
print("현재 날짜와 시간:", now)
이 코드는 이렇게 말하는 거야 "야, datetime, 지금 몇 시인지 알아보자!" 뭐가 좋냐면, now()는 현재 시간 정보가 담긴 datetime 객체를 반환해줘. 마치 모든 걸 알고 있는 교수님처럼 말이야.
로컬 시간과 UTC 시간
아, UTC — 모든 사람이 시간대 구애 없이 공유하는 시간이지. 만약 화성의 정확한 시간을 알고 싶다면 (거의), UTC가 딱이야. 이렇게 가져올 수 있어:
# UTC 형식의 현재 시간 가져오기
now_utc = datetime.utcnow()
print("현재 날짜와 시간 (UTC):", now_utc)
차이가 뭐냐고? 로컬 시간은 사용자의 시간대를 반영하지만, UTC는 지리적 위치와 상관없는 그리니치 표준시야.
날짜와 시간 요소 추출
때로는 전체 날짜가 아니라 일부 요소만 필요할 때가 있어. 마치 피자를 주문해놓고 치즈만 먹는 것처럼 — 항상 말이 되는 건 아니지만, 가끔 필요는 해:
# 날짜와 시간의 개별 요소 추출
year = now.year
month = now.month
day = now.day
hour = now.hour
minute = now.minute
second = now.second
print(f"지금은 {hour}:{minute}:{second} {day}.{month}.{year}")
이렇게 하면 날짜와 시간의 개별 요소를 다룰 수 있어. 예를 들어, 동료 생일을 축하할 때 (물론, 동료가 직접 알려준다면).
현재 날짜와 시간 활용 예
다른 경우에는 시간의 다른 부분에서 일어나는 이벤트를 프로그래밍해야 할 수도 있어. 예를 들어, 금요일마다 모든 사람을 축하해주는 간단한 스크립트를 만들어보자 (금요일을 싫어하는 사람이 있을까?).
# 현재 날짜 사용 예 - 매일 알림
if now.weekday() == 4: # 금요일
print("우와! 오늘은 금요일이야, 이제 쉬어야지!")
else:
print("조금만 더 기다려, 아직 금요일은 아니야.")
이 코드는 메서드 weekday()를 사용해 0부터 6까지의 숫자를 반환해 (0은 월요일, 6은 일요일) 오늘이 무슨 요일인지 확인하고 주말 바이킹에 대비하라고 알려주는 거야.
2. datetime 객체 다루기
우리는 현재 시간뿐만 아니라 다른 순간으로 이동하거나, 시간이나 날짜를 비교하는 방법도 알아야 해. 예를 들어, 동료들과의 미팅에서 얼마나 늦었는지 계산하는 방법처럼 말이야.
# 시간 차이 계산 예
from datetime import timedelta
# 과거 날짜 생성
past_date = datetime(2023, 1, 1, 10, 0, 0)
# 현재 시간과 과거 시간의 차이 계산
difference = now - past_date
print(f"그 날로부터 {difference.days}일 {difference.seconds // 3600}시간이 지났어.")
여기서 우리는 과거의 날짜를 생성하고 현재와 비교해. 새해에서 몇 일이 지났는지 궁금하다고? 이제 알아!
3. 시간대 다루기
datetime에서 시간대를 다루기 위해선 pytz 라이브러리를 사용해. 이 라이브러리는 원하는 시간대로 날짜와 시간을 변환할 수 있게 해줘.
pytz 활용 예
from datetime import datetime
import pytz
# 현재 UTC 시간 가져오기
utc_now = datetime.now(pytz.utc)
print("현재 날짜와 시간 (UTC):", utc_now)
# 다른 시간대로 변환 (예: US/Pacific)
pacific_now = utc_now.astimezone(pytz.timezone("US/Pacific"))
print("현재 날짜와 시간 (Pacific Time):", pacific_now)
출력 결과:
현재 날짜와 시간 (UTC): 2024-11-04 14:53:27.123456+00:00
현재 날짜와 시간 (Pacific Time): 2024-11-04 06:53:27.123456-08:00
GO TO FULL VERSION