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

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

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
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.