我在下面发布了时间列表,并且很难将其转换为以下时间:
第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']
答案 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']
首先将时间标记为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']