ISO 8601 형식의 시간을 파이썬에서 쓰려면?


"2008-09-03T20:56:35.450686Z"같은 RFC 3339 스트링을 파이썬 datetime.datetime 타입으로 넘기고 싶습니다. 찾아보니까 유닉스 타임스탬프 같은 형식만 나오던데 RFC 3339는 어떡하죠?

  • 2016년 01월 21일에 작성됨

조회수 243


1 답변


좋아요
0
싫어요
채택취소하기

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
  • 2016년 01월 21일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close