【发布时间】:2018-12-11 05:31:18
【问题描述】:
我正在尝试将数字转换为小时格式,如下所示,
numbers = [7,12,16,18]
预期的操作:
hours = ["07:00 AM","12:00 PM","04:00 PM","06:00 PM"]
有没有办法做到这一点?
【问题讨论】:
标签: python python-3.x datetime
我正在尝试将数字转换为小时格式,如下所示,
numbers = [7,12,16,18]
预期的操作:
hours = ["07:00 AM","12:00 PM","04:00 PM","06:00 PM"]
有没有办法做到这一点?
【问题讨论】:
标签: python python-3.x datetime
使用标准库:
import datetime
numbers = [7, 12, 16, 18]
hours = [datetime.time(num).strftime("%I:00 %p") for num in numbers]
# ['07:00 AM', '12:00 PM', '04:00 PM', '06:00 PM']
【讨论】:
试试这个:
import datetime
numbers = [7,12,16,18]
hours=[]
for i in numbers:
if i <= 12:
time = str(datetime.timedelta(hours=i)) +" AM"
else:
time = str(datetime.timedelta(hours=i-12)) + " PM"
hours.append(time)
print(hours)
输出:
['7:00:00 AM', '12:00:00 PM', '4:00:00 PM', '6:00:00 PM']
【讨论】:
不是最干净的方式,但可以完成工作:
numbers = [7,12,16,18]
hours = []
for n in numbers:
if n < 12:
if len(str(n)) == 1:
temp = "0"+str(n)+":00 AM"
else:
temp = str(n)+":00 AM"
else:
x = n - 12
if x == 0:
temp = "12:00 PM"
if len(str(x)) == 1:
temp = "0"+str(x)+":00 PM"
else:
temp = str(x)+":00 PM"
hours.append(temp)
输出:
['07:00 AM', '12:00 PM', '04:00 PM', '06:00 PM']
【讨论】:
如果我可以使用函数来解决它:
def function(lst):
returned_list=[]
for item in lst:
end="AM"
if item >=12:
end="PM"
if item >12:
item-=12
if len(str(item))<2:
item='0'+str(item)
returned_list.append("{}:00 {}".format(item,end))
return returned_list
程序限制是只能做0到23
【讨论】: