How to make an unaware datetime timezone aware in python

前端 未结 12 2223
一向
一向 2020-11-22 08:39

What I need to do

I have a timezone-unaware datetime object, to which I need to add a time zone in order to be able to compare it with other timezon

12条回答
  •  独厮守ぢ
    2020-11-22 09:02

    Changing between timezones

    import pytz
    from datetime import datetime
    
    other_tz = pytz.timezone('Europe/Madrid')
    
    # From random aware datetime...
    aware_datetime = datetime.utcnow().astimezone(other_tz)
    >> 2020-05-21 08:28:26.984948+02:00
    
    # 1. Change aware datetime to UTC and remove tzinfo to obtain an unaware datetime
    unaware_datetime = aware_datetime.astimezone(pytz.UTC).replace(tzinfo=None)
    >> 2020-05-21 06:28:26.984948
    
    # 2. Set tzinfo to UTC directly on an unaware datetime to obtain an utc aware datetime
    aware_datetime_utc = unaware_datetime.replace(tzinfo=pytz.UTC)
    >> 2020-05-21 06:28:26.984948+00:00
    
    # 3. Convert the aware utc datetime into another timezone
    reconverted_aware_datetime = aware_datetime_utc.astimezone(other_tz)
    >> 2020-05-21 08:28:26.984948+02:00
    
    # Initial Aware Datetime and Reconverted Aware Datetime are equal
    print(aware_datetime1 == aware_datetime2)
    >> True
    

提交回复
热议问题