본문 바로가기
Python

Python - Datetime 특정 시간 간격으로 나누기

by 올엠 2024. 3. 10.
반응형

DateTime을 특정 시간으로 나누어 실행해야 하는 경우 유용한 함수이다.

방식은 시간의 차이를 계산한 후 이를 나누어야 하는 타임값으로 나누어 저장하는 방식이라고 할 수 있다.

코드는 아래와 같다.

import datetime

def split_time_range(start_time, end_time, interval):
    # 시작 시간과 종료 시간을 UTC로 변환
    start_time = datetime.datetime.combine(start_time.date(), start_time.time(), tzinfo=datetime.timezone.utc)
    end_time = datetime.datetime.combine(end_time.date(), end_time.time(), tzinfo=datetime.timezone.utc)

    # 시작 시간과 종료 시간의 차이를 계산
    delta = end_time - start_time

    # 간격으로 나누기
    intervals = delta.total_seconds() // 60 // interval

    # 분할된 시간 범위를 생성
    time_ranges = []
    for i in range(int(intervals)):
        start = start_time + datetime.timedelta(minutes=i * interval)
        end = start + datetime.timedelta(minutes=interval)
        time_ranges.append((start, end))
        
    return time_ranges

start_time = "2023-12-22 09:00:00"
end_time = "2023-12-22 21:00:00"
interval = 30

if not isinstance(start_time, datetime.datetime) and not isinstance(end_time, datetime.datetime):
    start_time = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")
    end_time = datetime.datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S")

time_ranges = split_time_range(start_time, end_time, interval)

for time_range in time_ranges:
    print(time_range[0])
    print(time_range[1])

위 코드를 실행하면,  9시부터 21시까지 30분간격으로 나눈 값이 저장된다.



반응형