본문 바로가기
Pythonian

다양한 날짜 포멧 문자열을 날짜 datetime 포멧으로 변환하기

by noruen 2022. 5. 20.

일반적인 포멧인 경우

 

dateutil 을 사용하면 된다. 

 

 

import dateutil.parser
from datetime import datetime

#
timeStr0 = [
    'Tue, 07 Aug 2009 21:17:00 +0800',
    '2009/08/07 22:12:21',
    '07/08/2009 22:12:21',
    '2009-8-7 22:12'
    ]

for t in timeStr0:

    # 변환
    d = dateutil.parser.parse(t)
    print(type(d))
    print(d)
    dStr = d.strftime('%Y-%m-%d %H:%M:%S')
    print(dStr)

 

한글 표현 날짜의 경우

 

 

 

import dateutil.parser
from datetime import datetime

timeStr1 = [
        '2009년 8월 7일 22시 12분',
        '2009년 8월 7일 22시 12분 21초'
    ]

for t in timeStr1:

    # 변환
    d = dateutil.parser.parse(t)
    print(type(d))
    print(d)
    dStr = d.strftime('%Y-%m-%d %H:%M:%S')
    print(dStr)

에러가 난다. 

dateutil.parser._parser.ParserError: Unknown string format: 2009년 8월 7일 22시 12분

 

한글 표현 날짜를 포함해서 모두 되도록 했다

전처리 해서.

import dateutil.parser
from datetime import datetime

timeStr = [
    'Tue, 07 Aug 2009 21:17:00 +0800',
    '2009/08/07 22:12:21',
    '07/08/2009 22:12:21',
    '2009-8-7 22:12',
    '2009년 8월 7일 22시 12분',
    '2009년 8월 7일 22시 12분 21초'
    ]

for t in timeStr:

	# 전처리
    if t.find('일') == -1 and t.find('월') == -1 and t.find('년') == -1:
        print(t)
    else:
        t = t.replace('년', '/').replace('월', '/').replace('일', '|').replace('시', ':').replace('분', ':').replace('초', '')
        t = t.replace(' ', '')
        t = t.replace('|', ' ')
    if t[-1] == ':':
        t = t[:-1]
        
	# 변환
    d = dateutil.parser.parse(t)
    print(type(d))
    print(d)
    dStr = d.strftime('%Y-%m-%d %H:%M:%S')
    print(dStr)
반응형

댓글