2

我正在尝试创建一个with<select>以半小时为增量创建一天中的所有时间(12 小时时间而不是 24 小时时间)。我尝试使用and创建一个重复数字。我就是不明白。当然我可以手动写出来,但那有什么乐趣呢?最终结果将是:<option>listxrangecyclelist

['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']

4

4 回答 4

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')]
于 2013-08-15T06:31:24.567 回答
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:此外,虽然这应该可以工作,但它真的很乱,所以我可能会将所有从分钟到日期字符串的转换放在某个函数中,然后在列表理解中调用该函数。

于 2013-08-15T06:14:41.570 回答
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']
于 2013-08-15T06:50:19.363 回答
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 重复自己是不好的,但这很容易。

呸,你编辑了包含数组的问题,我以为你想要 HTML - 忽略这个

于 2013-08-15T06:18:54.810 回答