I’m just trying to add tzinfo
for my datetime
object (with no specific time). I have date in str
format, and timezone in str
format.
I created this function:
JavaScript
x
9
1
from datetime import datetime
2
import pytz
3
4
def _converttime(dt_str, tz_str):
5
dt = datetime.fromisoformat(dt_str)
6
tz = pytz.timezone(tz_str)
7
dt = dt.replace(tzinfo=tz)
8
return dt
9
all looks fine when I am using tzinfo
like: “Etc/GMT-6”:
JavaScript
1
4
1
a = _converttime("2018-01-01", "Etc/GMT-6")
2
print(f'a: {a}')
3
>>a: 2018-01-01 00:00:00+06:00
4
but look at this:
JavaScript
1
8
1
b = _converttime("2018-01-01", "Europe/Kirov")
2
print(f'b: {b}')
3
>>b: 2018-01-01 00:00:00+03:19
4
5
c = _converttime("2018-01-01", "America/Panama")
6
print(f'c: {c}')
7
>>c: 2018-01-01 00:00:00-05:18
8
Why do I get such a strange values like 03:19, 05:18 when it should be 03:00, -05:00? It cause problems lately.
Advertisement
Answer
Ok, i dont know whats wrong with this, but i found solution using django make_aware:
JavaScript
1
8
1
from django.utils.timezone import make_aware
2
3
def _converttime2(dt_str, tz_str):
4
dt = datetime.fromisoformat(dt_str)
5
tz = pytz.timezone(tz_str)
6
dt = make_aware(dt, tz)
7
return dt
8