Is there an inverse function for time.gmtime() that parses a UTC tuple to seconds since the epoch?

后端 未结 4 1185
抹茶落季
抹茶落季 2020-12-14 17:33

python\'s time module seems a little haphazard. For example, here is a list of methods in there, from the docstring:

time() -- return current time in second         


        
4条回答
  •  旧时难觅i
    2020-12-14 17:51

    mktime documentation is a bit misleading here, there is no meaning saying it's calculated as a local time, rather it's calculating the seconds from Epoch according to the supplied tuple - regardless of your computer locality.

    If you do want to do a conversion from a utc_tuple to local time you can do the following:

    >>> time.ctime(time.time())
    'Fri Sep 13 12:40:08 2013'
    
    >>> utc_tuple = time.gmtime()
    >>> time.ctime(time.mktime(utc_tuple))
    'Fri Sep 13 10:40:11 2013'
    
    >>> time.ctime(time.mktime(utc_tuple) - time.timezone)
    'Fri Sep 13 12:40:11 2013'
    


    Perhaps a more accurate question would be how to convert a utc_tuple to a local_tuple. I would call it gm_tuple_to_local_tuple (I prefer long and descriptive names):

    >>> time.localtime(time.mktime(utc_tuple) - time.timezone)
    time.struct_time(tm_year=2013, tm_mon=9, tm_mday=13, tm_hour=12, tm_min=40, tm_sec=11, tm_wday=4, tm_yday=256, tm_isdst=1)
    


    Validatation:

    >>> time.ctime(time.mktime(time.localtime(time.mktime(utc_tuple) - time.timezone)))
    'Fri Sep 13 12:40:11 2013'    
    

    Hope this helps, ilia.

提交回复
热议问题