Get UTC offset from time zone name in python

前端 未结 3 1125
忘了有多久
忘了有多久 2020-12-12 13:26

How can I get UTC offset from time zone name in python?

For example: I have Asia/Jerusalem and I want to get +0200

相关标签:
3条回答
  • 2020-12-12 14:09

    Because of DST (Daylight Saving Time), the result depends on the time of the year:

    import datetime, pytz
    
    datetime.datetime.now(pytz.timezone('Asia/Jerusalem')).strftime('%z')
    
    # returns '+0300' (because 'now' they have DST)
    
    
    pytz.timezone('Asia/Jerusalem').localize(datetime.datetime(2011,1,1)).strftime('%z')
    
    # returns '+0200' (because in January they didn't have DST)
    
    0 讨论(0)
  • 2020-12-12 14:10

    Have you tried using the pytz project and the utcoffset method?

    e.g.

    >>> import datetime
    >>> import pytz
    >>> pacific_now = datetime.datetime.now(pytz.timezone('US/Pacific'))
    >>> pacific_now.utcoffset().total_seconds()/60/60
    -7.0
    
    0 讨论(0)
  • 2020-12-12 14:28

    I faced a similar issue while converting to UTC timestamp from python datetime object. My datetime was timezone agnostic (very naive) and as such astimezone would not work.

    To mitigate the issue, I made my datetime object timezone aware and then used the above magic.

    import pytz
    system_tz = pytz.timezone(constants.TIME_ZONE)
    localized_time = system_tz.localize(time_of_meeting)
    fmt = "%Y%m%dT%H%M%S" + 'Z'
    return localized_time.astimezone(pytz.utc).strftime(fmt)
    

    Here, constants.TIME_ZONE is where I had the default timezone of my persisted objects.

    Hope this helps someone attempting to convert python datetime objects to UTC. Once converted, format any way you please.

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