python

14편 Python 기초 문법: 날짜와 시간 다루기

파이썬 티쳐 2024. 11. 18. 09:45

1. 날짜와 시간 관련 모듈

1.1 datetime 모듈 소개

datetime 모듈은 Python에서 날짜와 시간을 처리하는 기본 모듈입니다. 현재 날짜와 시간을 가져오거나, 날짜 형식을 변환하고 계산할 수 있습니다.

import datetime

1.2 현재 날짜와 시간 가져오기 (datetime.now())

현재 날짜와 시간을 가져오기 위해 datetime.now() 메서드를 사용합니다.

from datetime import datetime

current_time = datetime.now()
print(current_time)  # 출력: 2024-10-23 14:35:45.123456

1.3 날짜 형식 변경 (strftime(), strptime())

strftime(): 날짜 객체를 문자열 형식으로 변환합니다.

formatted_date = current_time.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_date)  # 출력: 2024-10-23 14:35:45

strptime(): 문자열을 날짜 형식으로 변환합니다.

date_string = "2024-10-23 14:35:45"
date_object = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print(date_object)  # 출력: 2024-10-23 14:35:45

1.4 날짜 계산 (덧셈, 뺄셈 등)

timedelta 객체를 사용하여 날짜 간의 덧셈과 뺄셈을 수행할 수 있습니다.

from datetime import timedelta

# 5일 후 날짜 계산
future_date = current_time + timedelta(days=5)
print(future_date)  # 출력: 2024-10-28 14:35:45

2. 시간과 관련된 고급 기능

2.1 타이머 기능 (time.sleep())

time.sleep() 함수는 프로그램 실행을 일정 시간 동안 멈추게 할 수 있습니다.

import time

print("3초 대기 중...")
time.sleep(3)
print("3초 후 출력!")

2.3 시간대(timezone) 처리

pytz 라이브러리를 사용해 시간대를 처리할 수 있습니다. 이를 통해 UTC 시간을 특정 지역 시간으로 변환하거나, 타임존을 변경할 수 있습니다.

import pytz
from datetime import datetime

# UTC 시간 가져오기
utc_time = datetime.now(pytz.utc)
print(utc_time)  # 출력: 2024-10-23 05:35:45+00:00

# 특정 타임존으로 변환
seoul_tz = pytz.timezone("Asia/Seoul")
seoul_time = utc_time.astimezone(seoul_tz)
print(seoul_time)  # 출력: 2024-10-23 14:35:45+09:00

3. 날짜와 시간을 활용한 프로그램

3.1 날짜 계산을 활용한 D-Day 프로그램 만들기

다음 프로그램은 사용자가 입력한 날짜로부터 D-Day를 계산합니다.

from datetime import datetime

def calculate_d_day(target_date_str):
    target_date = datetime.strptime(target_date_str, "%Y-%m-%d")
    current_date = datetime.now()
    days_left = (target_date - current_date).days
    if days_left > 0:
        print(f"D-Day까지 {days_left}일 남았습니다.")
    elif days_left == 0:
        print("오늘이 D-Day입니다!")
    else:
        print(f"D-Day로부터 {-days_left}일이 지났습니다.")

# 사용 예시
calculate_d_day("2024-12-25")

3.2 일정 관리 프로그램 작성 (특정 날짜에 알림 설정)

다음은 사용자가 입력한 특정 날짜와 시간에 도달할 때 알림을 제공하는 프로그램입니다.

from datetime import datetime, timedelta
import time

def set_reminder(reminder_time_str):
    reminder_time = datetime.strptime(reminder_time_str, "%Y-%m-%d %H:%M:%S")
    current_time = datetime.now()

    while current_time < reminder_time:
        time_left = (reminder_time - current_time).total_seconds()
        print(f"알림까지 {int(time_left // 60)}분 남았습니다.")
        time.sleep(60)  # 1분마다 상태 출력
        current_time = datetime.now()

    print("알림 시간입니다!")

# 사용 예시: 2분 후에 알림을 설정
reminder_time_str = (datetime.now() + timedelta(minutes=2)).strftime("%Y-%m-%d %H:%M:%S")
set_reminder(reminder_time_str)