time.struct_time 객체를 date time 객체로 변환하기

제가 쓰는 코드에서 첫 번째 라이브러리는 time.struct_time을, 두 번째 라이브러리는 datetime를 인자로 받습니다. time.struct_time 객체를 datetime 객체로 바꾸려면 어떻게 해야 되나요?

1답변

  • 좋아요

    0

    싫어요
    채택취소하기
    1. time.mktime()으로 time tuple을 초 단위로 바꾼 후(임시)
    2. datetime.fromtimestamp()을 써서 datetime 객체를 얻음
    from time import mktime, gmtime
    from datetime import datetime
    
    rightnow = gmtime()
    print("gmtime:\t\t\t\t\t\t\t\t\t", rightnow)
    print("mktime(mytime):\t\t\t\t\t\t\t", mktime(rightnow))
    print("type(mktime(rightnow)):\t\t\t\t\t", type(mktime(rightnow)))
    print("datetime.fromtimestamp(mktime(rightnow)):", datetime.fromtimestamp(mktime(rightnow)))
    

    출력 :

    gmtime:                                  time.struct_time(tm_year=2016, tm_mon=1, tm_mday=27, tm_hour=2, tm_min=56, tm_sec=4, tm_wday=2, tm_yday=27, tm_isdst=0)
    mktime(mytime):                          1453830964.0
    type(mktime(rightnow)):                  <class 'float'>
    datetime.fromtimestamp(mktime(rightnow)): 2016-01-27 02:56:04
    

    아니면 간단하게 struct_time을 인덱스 6까지만 slice 한 후, 바로 변환하는 방법도 있습니다.

    from time import localtime
    from datetime import datetime
    
    structTime = localtime()
    print("localtime()\t\t\t\t\t:", structTime)
    print("localtime()[:6]\t\t\t\t:", structTime[:6])
    print("datetime(*structTime[:6])\t:", datetime(*structTime[:6]))
    

    출력 :

    localtime()                 : time.struct_time(tm_year=2016, tm_mon=1, tm_mday=27, tm_hour=12, tm_min=5, tm_sec=4, tm_wday=2, tm_yday=27, tm_isdst=0)
    localtime()[:6]             : (2016, 1, 27, 12, 5, 4)
    datetime(*structTime[:6])   : 2016-01-27 12:05:04
    

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

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