Преобразование времени 24 часа в время 12 часов - PullRequest
0 голосов
/ 02 июля 2018

У меня есть список раз, опубликованный ниже, и я испытываю трудности с преобразованием его в следующее:

Шаг 1 : преобразование во время EST в 24-часовом формате.

Шаг 2 : преобразование в 12-часовой формат времени EST.

Я пытался делать это как на Python, так и на Pandas, и я готов использовать все, что проще. Любая помощь будет принята с благодарностью.

['00:05', '17:07', '23:05', '23:05', '23:10', '23:10', '00:10', '00:15', 
'00:40', '01:40', '02:10']

1 Ответ

0 голосов
/ 02 июля 2018

Мы можем легко достичь того, что вы ищете, с datetime:

>>> import datetime
>>> times = [ "08:00", "23:00" ]
>>> [datetime.datetime.strptime(time, "%H:%M").strftime("%I:%M %p") for time in times]
['08:00 AM', '11:00 PM']

Это читает ваш time с strptime, а затем выводит его с strftime в понимании списка. Чтобы преобразовать это в EST без перехода на летнее время (что составляет -05:00), вы можете использовать pytz :

>>> import pytz
>>> [datetime.datetime.strptime(time, "%H:%M").replace(tzinfo=pytz.utc).astimezone(pytz.timezone('EST')).strftime("%I:%M %p") for time in times]
['03:00 AM', '06:00 PM']

, который сначала помечает время как utc (replace(tzinfo=pytz.utc)), а затем преобразует его в EST astimezone(pytz.timezone('EST')), а затем переформатирует в 12-часовое время.

Идя на шаг дальше к тому, что, я думаю, вы хотите, а именно к получению времени сегодня в EDT (EST с учетом datetime), мы можем взять подсказку из [этого вопроса] [2]:

converted = []
tz = pytz.timezone('America/New_York')
for time in times:
    time = datetime.datetime.strptime(time, "%H:%M").time()
    converted.append(datetime.datetime.now(pytz.utc).replace(hour=time.hour, minute=time.minute).astimezone(tz).strftime("%I:%M %p"))

Что создаст то, что, я полагаю, вы ищете:

['04:00 AM', '07:00 PM']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...