Convert UTC datetime string to local datetime

后端 未结 13 982
醉话见心
醉话见心 2020-11-22 05:37

I\'ve never had to convert time to and from UTC. Recently had a request to have my app be timezone aware, and I\'ve been running myself in circles. Lots of information on co

13条回答
  •  悲&欢浪女
    2020-11-22 06:01

    See the datetime documentation on tzinfo objects. You have to implement the timezones you want to support yourself. The are examples at the bottom of the documentation.

    Here's a simple example:

    from datetime import datetime,tzinfo,timedelta
    
    class Zone(tzinfo):
        def __init__(self,offset,isdst,name):
            self.offset = offset
            self.isdst = isdst
            self.name = name
        def utcoffset(self, dt):
            return timedelta(hours=self.offset) + self.dst(dt)
        def dst(self, dt):
                return timedelta(hours=1) if self.isdst else timedelta(0)
        def tzname(self,dt):
             return self.name
    
    GMT = Zone(0,False,'GMT')
    EST = Zone(-5,False,'EST')
    
    print datetime.utcnow().strftime('%m/%d/%Y %H:%M:%S %Z')
    print datetime.now(GMT).strftime('%m/%d/%Y %H:%M:%S %Z')
    print datetime.now(EST).strftime('%m/%d/%Y %H:%M:%S %Z')
    
    t = datetime.strptime('2011-01-21 02:37:21','%Y-%m-%d %H:%M:%S')
    t = t.replace(tzinfo=GMT)
    print t
    print t.astimezone(EST)
    

    Output

    01/22/2011 21:52:09 
    01/22/2011 21:52:09 GMT
    01/22/2011 16:52:09 EST
    2011-01-21 02:37:21+00:00
    2011-01-20 21:37:21-05:00a
    

提交回复
热议问题