ISO 8601 형식의 시간을 파이썬에서 쓰려면?
조회수 3569회
"2008-09-03T20:56:35.450686Z"
같은 RFC 3339 스트링을
파이썬 datetime.datetime
타입으로 넘기고 싶습니다.
찾아보니까 유닉스 타임스탬프 같은 형식만 나오던데
RFC 3339는 어떡하죠?
1 답변
-
1. datetime.datetime.strptime()을 쓰는 방법 - 2.6이상
파이썬 2.6부터 마이크로세컨드를 지원하는 기능이 추가되어 RFC 3339형의 스트링을
datetime.datetime
으로 변환할 수 있습니다.datetime.datetime.strptime(date_string, format)은
date_string
을 전달받아format
에 맞는datetime.datetime
객체를 return합니다.datetime.datetime.strptime("2008-09-03T20:56:35.450686Z", "%Y-%m-%dT%H:%M:%S.%fZ")
2. dateutil.parser.parse() 를 사용하는 방법
간략하게 말하면 dateutil.parser.parse(timestr, parserinfo=None, **kwargs)는 스트링 형식의 date/time스탬프를 인자로 받아
datetime.datetime
객체를 return합니다.dateutil은 RFC 3339형 스트링 외에, RFC 3339로 컴파일되지 않는 IOS 8601 날짜/시간 스트링도 지원하기 때문에 시간과 관련된 코드를 많이 써야 할 경우 추천합니다.
사용법 :
import dateutil.parser print "RFC 3339\t\t\t, 2008-09-03T20:56:35.450686Z:", dateutil.parser.parse('2008-09-03T20:56:35.450686Z') # RFC 3339 format print "ISO 8601 extended\t, 2008-09-03T20:56:35.450686", dateutil.parser.parse('2008-09-03T20:56:35.450686') # ISO 8601 extended format print "IOS 8601 basic\t\t, 0080903T205635.450686", dateutil.parser.parse('20080903T205635.450686') # ISO 8601 basic format print "IOS 8601 basic(date), 20080903", dateutil.parser.parse('20080903') # ISO 8601 basic format, date only
결과 :
RFC 3339 , 2008-09-03T20:56:35.450686Z: 2008-09-03 20:56:35.450686+00:00 ISO 8601 extended , 2008-09-03T20:56:35.450686 2008-09-03 20:56:35.450686 IOS 8601 basic , 0080903T205635.450686 2008-09-03 20:56:35.450686 IOS 8601 basic(date), 20080903 2008-09-03 00:00:00
댓글 입력