I have a timezone which is float (for example 4.0).
I want to construct datetime with given timezone.
I tried this,
datetime.now(timezone)
but it throws
TypeError: tzinfo argument must be None or of a tzinfo subclass, not type 'float'
So I wonder how can I make tzinfo from float?
解决方案
If you are using Python 3.2 or newer, you need to create a datetime.timezone() object; it takes an offset as a datetime.timedelta():
offset = timezone(timedelta(hours=timezone)
datetime.now(offset))
For earlier Python versions, it'll be easiest to use an external library to define a timezone object for you.
The dateutil library includes objects to take a numerical offset to create a timezone object:
from dateutil.tz import tzoffset
offset = tzoffset(None, timezone * 3600) # offset in seconds
datetime.now(offset)