[python] Arrow 라이브러리의 날짜와 시간 올림, 내림 예외 처리

Python에서 날짜와 시간을 처리할 때 Arrow 라이브러리는 매우 편리한 도구입니다. Arrow는 datetime 라이브러리의 기능을 보완하여 날짜와 시간을 쉽게 조작할 수 있게 해줍니다. 하지만 때로는 Arrow를 사용하여 날짜와 시간을 올림 또는 내림하는 과정에서 예외가 발생할 수 있습니다. 이러한 예외를 처리하는 방법에 대해 알아보겠습니다.

날짜 올림 예외 처리

Arrow를 사용하여 날짜를 올림할 때, 주의해야 할 것은 현재 날짜가 이미 최대 날짜인 경우 예외가 발생한다는 점입니다. 따라서 올림을 수행하기 전에 예외 처리를 해주어야 합니다.

import arrow

current_date = arrow.now().date()
try:
    next_day = current_date.shift(days=1)
except:
    next_day = arrow.get(current_date).ceil('day')

위 코드에서는 현재 날짜를 가져온 후 shift() 메서드를 사용하여 날짜를 하루 앞으로 이동시켰습니다. 하지만 만약 현재 날짜가 이미 최대 날짜라면 shift() 메서드는 예외를 발생시키게 됩니다. 이 경우에는 get() 메서드와 ceil() 메서드를 사용하여 예외를 처리하였습니다. get() 메서드는 Arrow 객체를 생성하는 함수이며, ceil() 메서드는 올림 작업을 수행합니다. 따라서 올림을 수행할 수 없는 경우에는 현재 날짜를 반환하게 됩니다.

시간 내림 예외 처리

시간을 내림하는 과정에서도 비슷한 예외가 발생할 수 있습니다. 현재 시간이 이미 최소 시간인 경우 예외가 발생하게 되므로, 이를 처리해주어야 합니다.

import arrow

current_time = arrow.now().time()
try:
    previous_hour = current_time.shift(hours=-1)
except:
    previous_hour = arrow.get(current_time).floor('hour')

위 코드에서는 현재 시간을 가져온 후 shift() 메서드를 사용하여 시간을 한 시간 뒤로 이동시켰습니다. 마찬가지로 최소 시간인 경우에는 예외가 발생하므로, get() 메서드와 floor() 메서드를 사용하여 예외를 처리하였습니다. floor() 메서드는 내림 작업을 수행합니다.

참고 자료