将24小时制转换为12小时制

时间:2018-07-01 21:57:32

标签: python python-3.x pandas

我在下面发布了时间列表,并且很难将其转换为以下时间:

第1步:以24小时格式转换为EST时间。

第2步:转换为美国东部标准时间12小时格式。

我已经尝试在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 :(得分:5)

通过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']

首先将时间标记为utcreplace(tzinfo=pytz.utc)),然后将其转换为EST astimezone(pytz.timezone('EST')),然后将其重新格式化为12小时制。

比我想的要更进一步,这是为了让今天的时间在EDT中(ESTdatetime中),我们可以从[这个问题]中得到提示] [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']