Неверное преобразование UT C в CST с использованием даты и времени - PullRequest
1 голос
/ 20 февраля 2020

У меня небольшая проблема с преобразованием UT C в CST из модуля python, datetime. Кажется, вместо шести даже 5 часов и 51 минута. См. Код.

import datetime as dt
from datetime import datetime
from pytz import timezone
import pytz

time_stamp = '18:42:14'
utc = timezone('UTC')
central = timezone('US/Central')
published_time = datetime.strptime(time_stamp, '%H:%M:%S')
published_gmt = published_time.replace(tzinfo=utc)
published_cst = published_gmt.astimezone(central)
actual_time_published = published_cst.strftime('%I:%M:%S %p')
print(time_stamp)
print(published_time)
print(published_cst)
print('Time: '+actual_time_published)

И вывод терминала:

18:42:14
1900-01-01 18:42:14
1900-01-01 12:51:14-05:51
Time: 12:51:14 PM

1 Ответ

1 голос
/ 20 февраля 2020

По какой-то причине библиотека часовых поясов Python считает, что смещение UT C для US / Central было -05: 51 до 1901-12-13T20: 45: 52Z - вот когда она переключается на -06: 00 .

Правила часового пояса фактически имеют значение -05: 50: 36 (то есть 5 часов, 50 минут и 36 секунд) после UT C до 1883-11-18T18: 00: 00Z, при котором укажите go на -06: 00, поэтому библиотека определенно поступает неправильно.

Однако, что более важно, вы пытаетесь выполнить преобразование часового пояса для просто , что плохо делать. Вы должны всегда выполнять преобразование часового пояса для полных значений даты / времени, потому что это единственное, что имеет смысл. В одно и то же время дня в разных часовых поясах будут разные смещения в разные даты.

В любом случае ожидается, что база данных часовых поясов IANA будет точной только после 1970 года, хотя библиотека не соблюдает ее должным образом в 1901 году вполне возможно, что данные за тот год неверны. Я подозреваю, что ваши реальные данные не о 1900 году, а о дате, относительно более поздней - в этот момент и библиотека, и база данных, скорее всего, будут правильными. Поэтому убедитесь, что вы используете правильную дату, и проблема исчезнет (я подозреваю) go.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...