본문 바로가기

Study Information Technology

Python의 time 및 datetime 모듈로 시간 조작과 스케줄링 수행하기

728x90
반응형

Python의 timedatetime 모듈로 시간 조작과 스케줄링 수행하기

Overview

Python에서는 시간 조작과 스케줄링 작업을 timedatetime 모듈을 통해 간단하게 처리할 수 있습니다. 이 두 모듈은 각각 특정한 기능과 사용 사례에 맞게 설계되어 있어, 작업의 요구 사항에 따라 적절한 모듈을 선택해 사용할 수 있습니다. 이번 글에서는 timedatetime 모듈의 주요 기능과 사용법, 에러 처리 방법까지 자세히 설명하겠습니다.

time 모듈

time 모듈은 시간을 측정하고 조작하는 데 필요한 다양한 함수와 상수를 제공합니다. 이 모듈은 주로 현재 시간의 타임스탬프를 얻거나, 특정 시간까지의 대기 시간을 설정하는 데 유용합니다.

주요 함수

  1. time.time(): 현재 시간을 타임스탬프(초 단위의 실수형)로 반환합니다.
import time

timestamp = time.time()
print(f"현재 타임스탬프: {timestamp}")

예시: 만약 현재 시간이 2024년 8월 17일 오후 3시라고 가정하면, timestamp는 대략적으로 1723894800.0과 같은 값을 반환할 것입니다.

  1. time.sleep(seconds): 주어진 초만큼 프로그램 실행을 멈춥니다.
import time

print("잠시 대기합니다...")
time.sleep(5)  # 5초 대기
print("대기 종료!")

예시: 위 코드는 "잠시 대기합니다..."라는 메시지를 출력한 후 5초 동안 멈추고, 그 이후에 "대기 종료!"라는 메시지를 출력합니다.

  1. time.localtime([seconds]): 타임스탬프를 현지 시간의 구조체로 변환합니다. 인자가 주어지지 않으면 현재 시간이 반환됩니다.
import time

local_time = time.localtime()
print(f"현재 로컬 시간: {local_time.tm_hour}:{local_time.tm_min}:{local_time.tm_sec}")

예시: local_timetime.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초입니다.

  1. 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 모듈은 날짜와 시간을 조작하는 데 필요한 강력한 도구를 제공합니다. 이 모듈은 날짜와 시간을 계산하고, 두 날짜 간의 차이를 계산하는 등의 작업을 수행할 수 있습니다.

주요 클래스와 함수

  1. datetime.datetime: 날짜와 시간을 함께 표현하는 클래스입니다.
from datetime import datetime

now = datetime.now()
print(f"현재 날짜와 시간: {now}")

예시: now2024-08-17 15:30:00.123456 형식으로 현재 날짜와 시간을 포함합니다.

  1. datetime.date: 날짜를 표현하는 클래스입니다.
from datetime import date

today = date.today()
print(f"오늘 날짜: {today}")

예시: today2024-08-17 형식으로 현재 날짜를 반환합니다.

  1. datetime.timedelta: 날짜와 시간의 차이를 표현하는 클래스입니다.
from datetime import datetime, timedelta

today = datetime.now()
tomorrow = today + timedelta(days=1)
print(f"내일 날짜와 시간: {tomorrow}")

예시: tomorrow는 현재 시간보다 1일 더한 날짜와 시간을 반환합니다.

  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_object2024-08-17 15:30:00 형식으로 변환된 날짜 객체입니다.

  1. 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}")

참고문서

이 두 모듈은 각기 다른 시간 조작과 스케줄링 작업을 수행할 수 있으며, 여러분의 프로젝트에 적합한 모듈을 선택하여 사용할 수 있습니다. 다양한 예제와 함께 설명된 기능들을 통해 필요한 작업을 쉽게 수행할 수 있을 것입니다.

728x90
반응형