Python의 time
및 datetime
모듈로 시간 조작과 스케줄링 수행하기
Overview
Python에서는 시간 조작과 스케줄링 작업을 time
과 datetime
모듈을 통해 간단하게 처리할 수 있습니다. 이 두 모듈은 각각 특정한 기능과 사용 사례에 맞게 설계되어 있어, 작업의 요구 사항에 따라 적절한 모듈을 선택해 사용할 수 있습니다. 이번 글에서는 time
과 datetime
모듈의 주요 기능과 사용법, 에러 처리 방법까지 자세히 설명하겠습니다.
time
모듈
time
모듈은 시간을 측정하고 조작하는 데 필요한 다양한 함수와 상수를 제공합니다. 이 모듈은 주로 현재 시간의 타임스탬프를 얻거나, 특정 시간까지의 대기 시간을 설정하는 데 유용합니다.
주요 함수
time.time()
: 현재 시간을 타임스탬프(초 단위의 실수형)로 반환합니다.
import time
timestamp = time.time()
print(f"현재 타임스탬프: {timestamp}")
예시: 만약 현재 시간이 2024년 8월 17일 오후 3시라고 가정하면, timestamp
는 대략적으로 1723894800.0
과 같은 값을 반환할 것입니다.
time.sleep(seconds)
: 주어진 초만큼 프로그램 실행을 멈춥니다.
import time
print("잠시 대기합니다...")
time.sleep(5) # 5초 대기
print("대기 종료!")
예시: 위 코드는 "잠시 대기합니다..."라는 메시지를 출력한 후 5초 동안 멈추고, 그 이후에 "대기 종료!"라는 메시지를 출력합니다.
time.localtime([seconds])
: 타임스탬프를 현지 시간의 구조체로 변환합니다. 인자가 주어지지 않으면 현재 시간이 반환됩니다.
import time
local_time = time.localtime()
print(f"현재 로컬 시간: {local_time.tm_hour}:{local_time.tm_min}:{local_time.tm_sec}")
예시: local_time
이 time.struct_time(tm_year=2024, tm_mon=8, tm_mday=17, tm_hour=15, tm_min=30, tm_sec=0, tm_wday=6, tm_yday=230, tm_isdst=0)
이라면, 현재 시간은 15시 30분 0초입니다.
time.strftime(format[, t])
: 구조체 시간t
를 지정된 포맷 문자열에 맞게 문자열로 변환합니다.
import time
current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(f"현재 시간: {current_time}")
예시: %Y-%m-%d %H:%M:%S
포맷을 사용하면 "2024-08-17 15:30:00"과 같은 형식의 문자열이 출력됩니다.
에러 처리
ValueError
:strftime
함수에 잘못된 포맷 문자열을 입력하면 발생합니다. 예를 들어%z
포맷을 잘못 사용할 경우 발생할 수 있습니다.
해결 방법: 포맷 문자열을 정확히 확인하고, 올바른 포맷 코드를 사용해야 합니다.
import time
try:
incorrect_time = time.strftime("%z", time.localtime())
except ValueError as e:
print(f"포맷 문자열 오류: {e}")
datetime
모듈
datetime
모듈은 날짜와 시간을 조작하는 데 필요한 강력한 도구를 제공합니다. 이 모듈은 날짜와 시간을 계산하고, 두 날짜 간의 차이를 계산하는 등의 작업을 수행할 수 있습니다.
주요 클래스와 함수
datetime.datetime
: 날짜와 시간을 함께 표현하는 클래스입니다.
from datetime import datetime
now = datetime.now()
print(f"현재 날짜와 시간: {now}")
예시: now
는 2024-08-17 15:30:00.123456
형식으로 현재 날짜와 시간을 포함합니다.
datetime.date
: 날짜를 표현하는 클래스입니다.
from datetime import date
today = date.today()
print(f"오늘 날짜: {today}")
예시: today
는 2024-08-17
형식으로 현재 날짜를 반환합니다.
datetime.timedelta
: 날짜와 시간의 차이를 표현하는 클래스입니다.
from datetime import datetime, timedelta
today = datetime.now()
tomorrow = today + timedelta(days=1)
print(f"내일 날짜와 시간: {tomorrow}")
예시: tomorrow
는 현재 시간보다 1일 더한 날짜와 시간을 반환합니다.
datetime.strptime(date_string, format)
: 문자열을 날짜 객체로 변환합니다.
from datetime import datetime
date_string = "2024-08-17 15:30:00"
date_object = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print(f"변환된 날짜 객체: {date_object}")
예시: date_object
는 2024-08-17 15:30:00
형식으로 변환된 날짜 객체입니다.
datetime.strftime(format)
: 날짜 객체를 지정된 포맷의 문자열로 변환합니다.
from datetime import datetime
now = datetime.now()
formatted_time = now.strftime("%A, %d %B %Y")
print(f"형식화된 날짜: {formatted_time}")
예시: %A, %d %B %Y
포맷을 사용하면 "Saturday, 17 August 2024"과 같은 형식의 문자열이 출력됩니다.
에러 처리
ValueError
:strptime
함수에 잘못된 날짜 형식 문자열을 입력하면 발생합니다. 예를 들어,"%Y-%m-%d %H:%M:%S"
형식이 아닌 문자열을 입력하면 오류가 발생할 수 있습니다.
해결 방법: 날짜 형식 문자열이 입력 문자열과 일치하는지 확인해야 합니다.
from datetime import datetime
try:
incorrect_date = datetime.strptime("2024-08-17", "%Y-%m-%d %H:%M:%S")
except ValueError as e:
print(f"날짜 형식 오류: {e}")
참고문서
이 두 모듈은 각기 다른 시간 조작과 스케줄링 작업을 수행할 수 있으며, 여러분의 프로젝트에 적합한 모듈을 선택하여 사용할 수 있습니다. 다양한 예제와 함께 설명된 기능들을 통해 필요한 작업을 쉽게 수행할 수 있을 것입니다.
'Study Information Technology' 카테고리의 다른 글
Python의 functools 모듈과 lrucache를 활용한 고차 함수 최적화 (0) | 2024.08.18 |
---|---|
Python의 asyncio를 활용한 비동기 IO 작업 이해하기 (0) | 2024.08.18 |
Python의 socket 프로그래밍 네트워크 통신을 위한 기초 (0) | 2024.08.18 |
Python의 dataclasses 모듈로 데이터 구조 간편하게 관리하기 (0) | 2024.08.18 |
Python의 codecs 모듈을 통한 국제화 지원 인코딩과 디코딩 (0) | 2024.08.18 |