pytz utc conversion

后端 未结 4 1185
醉话见心
醉话见心 2020-12-07 17:42

What is the right way to convert a naive time and a tzinfo into an UTC time? Say I have:

d = datetime(2009, 8, 31, 22, 30, 30)
tz = timezone(\'U         


        
相关标签:
4条回答
  • 2020-12-07 18:26

    Your first method seems to be the approved one, and should be DST-aware.

    You could shorten it a tiny bit, since pytz.utc = pytz.timezone('UTC'), but you knew that already :)

    tz = timezone('US/Pacific')
    def toUTC(d):
        return tz.normalize(tz.localize(d)).astimezone(pytz.utc)
    
    print "Test: ", datetime.datetime.utcnow(), " = ", toUTC(datetime.datetime.now())
    
    0 讨论(0)
  • 2020-12-07 18:30
        import pytz
        from django.utils import timezone
    
        tz = pytz.timezone('America/Los_Angeles')
        time = tz.normalize(timezone.now())
    
    0 讨论(0)
  • 2020-12-07 18:32

    What is the right way to convert a naive time and a tzinfo into an utc time?

    This answer enumerates some issues with converting a local time to UTC:

    from datetime import datetime
    import pytz # $ pip install pytz
    
    d = datetime(2009, 8, 31, 22, 30, 30)
    tz = pytz.timezone('US/Pacific')
    
    # a) raise exception for non-existent or ambiguous times
    aware_d = tz.localize(d, is_dst=None)
    ## b) assume standard time, adjust non-existent times
    #aware_d = tz.normalize(tz.localize(d, is_dst=False))
    ## c) assume DST is in effect, adjust non-existent times
    #aware_d = tz.normalize(tz.localize(naive_d, is_dst=True))
    
    # convert to UTC
    utc_d = aware_d.astimezone(pytz.utc)
    
    0 讨论(0)
  • 2020-12-07 18:37

    Use the first method. There's no reason to reinvent the wheel of timezone conversion

    0 讨论(0)
提交回复
热议问题