How to use datetime.tzinfo in Python?

一笑奈何 提交于 2019-12-11 05:14:03

问题


I have no idea how to use datetime.tzinfo module. I have to convert a datetime data from UTC to local timezone and if I retrieve '+2'(which means gmt+2) how do I convert this to tzinfo object?

Also, is it possible to convert from UTC to local timezone with daylight saving time applied automatically? How do I set to subtract one hour automatically only during dst?


回答1:


Python doesn't really implement well timezones. According to the documentation, tzinfo is just an abstract class meant to be implemented by the user.

I'd recommend the third party pytz module for dealing with timezones.




回答2:


You can use tzoffset to set the timezone offset that you retrieve. For example, if you get "+2", parse that string so that n = 2:

from dateutil.tz import tzoffset

utc_dt = your_datetime.replace(tzinfo=tzoffset("UTC+0",0))
local_dt = utc_dt.astimezone(tzoffset("UTC+{}".format(n), n*60*60))

The variable utc_dt was used just to be sure that your original datetime has a the right UTC timezone as attribute, otherwise it won't work. Then you can set the offset in seconds for your target local time.

I'm not sure if it's possible to apply DST just knowing the UTC/GMT offset, because some countries in a timezone may not apply it. If you had the exact localization, like "Europe/Vienna", you could use the pytz library and the datetime.dst() method to determine whether to subtract one hour or not.



来源:https://stackoverflow.com/questions/46052599/how-to-use-datetime-tzinfo-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!