我正在尝试使用<select>
创建<option>
,以半小时为增量创建list
一天中的所有时间(12小时时间而不是24小时时间)。
我尝试使用xrange
和cycle
创建重复数字的list
。我只是无法得到它。当然我可以手动写出来,但那有什么乐趣?
最终结果将是:
['12:00am', '12:30am','1:00am', '1:30am', '2:00am', '2:30am', '3:00am', '3:30am', '4:00am', '4:30am', '5:00am', '5:30am', '6:00am', '6:30am', '7:00am', '7:30am', '8:00am', '8:30am', '9:00am', '9:30am', '10:00am', '10:30am', '11:00am', '11:30am', '12:00am', '12:30am', '1:00pm', '1:30pm', '2:00pm', '2:30pm', '3:00pm', '3:30pm', '4:00pm', '4:30pm', '5:00pm', '5:30pm', '6:00pm', '6:30pm', '7:00pm', '7:30pm', '8:00pm', '8:30pm', '9:00pm', '9:30pm', '10:00pm', '10:30pm', '11:00pm', '11:30pm']
答案 0 :(得分:4)
['%s:%s%s' % (h, m, ap) for ap in ('am', 'pm') for h in ([12] + list(range(1,12))) for m in ('00', '30')]
答案 1 :(得分:3)
如果时间以分钟为单位,以下情况应该可以正常工作:
xrange(0, 1440, 30)
如果它们应该采用其他格式,则可以生成它们,然后转换为您想要的任何格式。
例如:
[(str(i / 60) if i / 60 > 9 else "0" + str(i / 60)) + ":" + (str(i % 60) if i % 60 > 9 else "0" + str(i % 60)) for i in xrange(0, 1440, 30)]
给予HH:MM
要获得HH:MM [AM / PM],以下情况应该有效,如果相当混乱:
[((str(i / 60 % 12 + 1) if (i / 60 % 12 + 1) > 9 else "0" + str(i / 60 % 12 + 1)) + ":" + (str(i % 60) if i % 60 > 9 else "0" + str(i % 60)) + ("am" if i / 60 < 11 or i / 60 > 22 else "pm")) for i in xrange(0, 1440, 30)]
编辑:这将是正确的顺序,但不会在正确的位置开始。要解决这个问题,如果从上面形成的列表是l,只需要
l[-2:] + l[:-2]
编辑2:此外,虽然这应该有效,但它确实很混乱,所以我可能会在一些函数中将所有转换从几分钟变为日期字符串,然后在列表解析中调用该函数。
答案 2 :(得分:2)
>>> s = datetime.datetime.strptime('12:00 AM', '%I:%M %p')
>>> r = []
>>> r.append(s.strftime('%I:%M %p'))
>>> for i in range(30,60*24,30):
... r.append((s+datetime.timedelta(minutes=i)).strftime('%I:%M %p'))
...
>>> r
['12:00 AM', '12:30 AM', '01:00 AM', '01:30 AM', '02:00 AM', '02:30 AM', '03:00 AM', '03:30 AM', '04:00 AM', '04:30 AM', '05:00 AM', '05:30 AM', '06:00 AM', '06:30 AM', '07:00 AM', '07:30 AM', '08:00 AM', '08:30 AM', '09:00 AM', '09:30 AM', '10:00 AM', '10:30 AM', '11:00 AM', '11:30 AM', '12:00 PM', '12:30 PM', '01:00 PM', '01:30 PM', '02:00 PM', '02:30 PM', '03:00 PM', '03:30 PM', '04:00 PM', '04:30 PM', '05:00 PM', '05:30 PM', '06:00 PM', '06:30 PM', '07:00 PM', '07:30 PM', '08:00 PM', '08:30 PM', '09:00 PM', '09:30 PM', '10:00 PM', '10:30 PM', '11:00 PM', '11:30 PM']
答案 3 :(得分:1)
for h in range(24):
print '<option value="%i">%i:00</option>' % (h, h)
print '<option value="%i">%i:30</option>' % (h, h)
是的(几乎)重复自己:00 /:30很糟糕,但这很容易。
BAH,你编辑了包含数组的问题,我以为你想要HTML - 忽略这个