공유 블로그

문자열 날짜 <-> datetime 변환 가능한 함수 이며, 추가로 transFormat에 따라 변환 가능 만들어 보았습니다.

 

from datetime import datetime


# 날짜 변환 함수(문자열 특정 포맷 날짜로 변환)
def trans_date(date: (datetime | str), toFormat: str = "%Y-%m-%d", transFormat: (str | bool) = "%Y-%m-%d", exception: list = []) -> (datetime | str | dict):
    r'''
    date : 날짜입력 (datetime, 문자열 형태로 입력)

    toFormat : 
        str타입 -> 문자열의 날짜형식에 맞게 입력
        datetime타입 -> 원하는 문자열날짜 형태로 출력할 형식으로 입력

    transFormat : 변환할 날짜 형식

    exception : 예외처리할 값들

    @return값 :
        date : 입력값
        returnDATE : 
            'toFormat' -> date값 변환 되서 나옴
            'transFormat' -> transFormat매개변수로 변환된 값 ('str', 'datetime')
    '''
    if date in exception:
        return ''

    returnDATE: dict[str, (str | dict[str, (str, datetime)])] = {
        'toFormat': None,
        'transFormat': {'str': None, 'datetime': None},
    }

    # 문자열일 경우
    if isinstance(date, str):
        returnDATE['toFormat'] = datetime.strptime(date, toFormat)

        if transFormat:
            returnDATE['transFormat']['str'] = returnDATE['toFormat'].strftime(transFormat)
            returnDATE['transFormat']['datetime'] = datetime.strptime(returnDATE['transFormat']['str'], transFormat)

    # 날짜 형식 일경우
    elif isinstance(date, datetime):
        returnDATE['toFormat'] = date.strftime(toFormat)

        if transFormat:
            returnDATE['transFormat']['str'] = date.strftime(transFormat)
            returnDATE['transFormat']['datetime'] = datetime.strptime(returnDATE['transFormat']['str'], transFormat)

    # if not pd.notna(date):
    #     return 'N/A'

    if not transFormat:
        del returnDATE['transFormat']

    return returnDATE


print(trans_date('2021-08-31 15:00:00', "%Y-%m-%d %H:%M:%S"))
print(trans_date('2021-08-31 15:00:00', "%Y-%m-%d %H:%M:%S", "%H:%M"))

print(trans_date(datetime(2021, 8, 31, 15, 0), "%H:%M"))
print(trans_date(datetime(2021, 8, 31, 15, 0), "%H:%M", "%Y-%m-%d %H:%M:%S"))

 

결과

 

 

활용한 추가 내용 : 2023.12.23 - [Project/Python] - python datetime 비교 함수

공유하기

facebook twitter kakaoTalk naver band kakaostory Copy URL