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

Cam*_*Cam 2 python python-3.x pandas

我有下面发布的时间列表,我很难将其转换为以下内容:

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

第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']
Run Code Online (Sandbox Code Playgroud)

Mat*_*ory 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']
Run Code Online (Sandbox Code Playgroud)

这会读取你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']
Run Code Online (Sandbox Code Playgroud)

首先将时间标记为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"))
Run Code Online (Sandbox Code Playgroud)

这将构建我认为您正在寻找的东西:

['04:00 AM', '07:00 PM']
Run Code Online (Sandbox Code Playgroud)