문자열 날짜 <-> 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 비교 함수