날짜와 시간 다루기 소개
잠깐 생각해 봐: 컴퓨터가 날짜와 시간을 다룰 수 없다고 상상해 봐. 끔찍해! 우리가 사랑하는 기기들이 일정 관리나 작업 자동화를 도와줄 수 없게 될 거야. Python이 어떻게 해야 중요한 약속에 늦지 않게 해주고, 반복적인 작업들을 자동으로 처리해주는지 알아보자.
날짜와 시간 작업은 프로그래밍에서 매우 중요한 부분이야, 특히 자동화와 관련해서. 예를 들어, 매시간 업데이트해야 하는 보고서나, 휴식이 필요하다고 알려주는 알림(그렇지 않으면 벌써 5시간째 모니터 앞에 있을지도 몰라!)이 필요하다고 해보자. Python은 날짜와 시간을 다루기 위한 많은 도구를 제공해, 이번 강의에서 그것들을 배워보자.
1. 날짜와 시간을 다루기 위한 모듈
Python에는 날짜와 시간을 쉽게 다룰 수 있게 해주는 여러 모듈이 있어. 주로 datetime, time, calendar 세 가지 모듈에 집중해 보자.
-
datetime: 아마도 날짜와 시간 작업의 대부분은 이 모듈로 할 거야. 이 모듈은 개별 날짜, 시간, 그리고 이들의 조합을 다룰 수 있는 클래스를 제공해. -
time: 이 모듈은 주로 시스템 시간과 상호작용하면서 저수준 시간 표현을 다룰 수 있는 함수를 제공해. -
calendar: 달력을 다루는 데 도움을 줄 거야 (이건 이름만 봐도 알겠지?).
datetime 모듈의 주요 함수와 클래스
datetime 모듈을 좀 더 깊게 들여다보고 주요한 구성 요소를 살펴보자.
date 클래스
이 클래스는 날짜를 다루기 위해 사용돼. 시간을 연결하지 않고 년, 월, 일을 설정하거나 변경할 수 있어.
from datetime import date
# date 객체 생성
my_birthday = date(1990, 12, 25)
print("내 생일 날짜:", my_birthday)
time 클래스
이름에서 알 수 있듯이, 이 클래스는 "시간" — 시, 분, 초 등만을 다룰 수 있어. 날짜와 별개로 시간을 관리하려는 경우에 적합해.
from datetime import time
# time 객체 생성
meeting_time = time(14, 30) # 14:30
print("회의 시간은:", meeting_time)
datetime 클래스
날짜와 시간을 하나로 결합한 가장 범용적인 클래스야.
from datetime import datetime
# 현재 날짜와 시간
now = datetime.now()
print("현재 날짜와 시간:", now)
2. datetime 모듈을 사용해 현재 날짜와 시간 얻기
현재 날짜와 시간을 얻는 건 일정 관리나 자동화 작업의 기본이야. datetime에는 이를 쉽게 얻을 수 있는 몇 가지 유용한 메소드가 있어.
현재 날짜와 시간 얻기
datetime.now()와 datetime.today() 메소드를 통해 현재 날짜와 시간을 쉽게 얻을 수 있어.
now = datetime.now()
print("현재 날짜와 시간 (now):", now)
today = datetime.today()
print("현재 날짜 (today):", today)
datetime 객체 다루기
datetime 객체를 사용하면 연도, 월, 일과 같은 시간 구성 요소를 추출할 수 있어. 또한 로컬 시간과 UTC 시간(세계 협정 시간)의 차이를 기억하는 것도 중요해.
year = now.year
month = now.month
day = now.day
hour = now.hour
minute = now.minute
second = now.second
print(f"오늘 날짜: {day}/{month}/{year}, 그리고 시간: {hour}:{minute}:{second}")
애플리케이션을 구현할 때는 로컬 시간과 UTC 시간의 차이를 항상 고려해야 해. 세상은 넓고, 모두 각자의 시간을 가지고 있으니까!
3. 실제 작업에서 현재 날짜와 시간을 활용한 예제
예를 들어, 어떤 데이터 소스로부터 매시간 데이터를 가져와야 한다고 하자. 현재 시간과 이전 가져오기 시간을 비교하면서 이것을 쉽게 자동화할 수 있어. 예를 들어:
from datetime import timedelta
last_run = datetime.now() - timedelta(hours=1)
current_time = datetime.now()
# 마지막 실행이 한 시간 이상 전이라면
if current_time - last_run > timedelta(hours=1):
print("데이터를 업데이트할 시간입니다!")
last_run = current_time
이 코드는 한 시간이 넘었을 때에만 우리가 무언가를 해야 한다고 친절히 알려줘. 시간을 다루는 수학적 연산에 timedelta를 사용하는 것이 얼마나 편리한지 주목해봐.
GO TO FULL VERSION