我正在编写代码,以30秒的间隔生成一整天的时间。我尝试使用DT.datetime和DT.time,但我总是得到一个datetime值或timedelta值,如(0,2970)。有人可以告诉我怎么做。
所以我需要一个包含以下数据的列表:
[00:00:00] [00:00:01] [00:00:02]
直到[23:59:59]并需要将它与日期时间值(例如6/23/2011 6:38:00 AM)进行比较。
谢谢!
答案 0 :(得分:0)
关于如何获取24小时工作日的增量值列表,有一个很棒的answer。我重复了一部分。
time
与datetime
进行比较的。假设你只是要比较时间部分并提取它。time.strptime
调用期望基于AM / PM的12小时时间,如您的示例所示。然后将其结果传递给time.strftime
,返回基于24小时的时间。以下是我认为您正在寻找的内容:
my_time = '6/23/2011 6:38:00 AM' # time you defined
from datetime import datetime, timedelta
from time import strftime, strptime
now = datetime(2013, 1, 1, 0, 0, 0)
last = datetime(2013, 1, 1, 23, 59, 59)
delta = timedelta(seconds=1)
times = []
while now <= last:
times.append(now.strftime('%H:%M:%S'))
now += delta
twenty_four_hour_based_time = strftime('%H:%M:%S', strptime(my_time, '%m/%d/%Y %I:%M:%S %p'))
twenty_four_hour_based_time in times # returns True
答案 1 :(得分:0)
您是否有理由想要使用日期时间而不是仅仅使用3来进行循环计数?同样,你想做一些奇特的事情,还是想与时间进行比较?如果你不需要考虑闰秒或类似的事情,那就这么简单。
import datetime
now = datetime.datetime.now()
for h in xrange(24):
for m in xrange(60):
for s in xrange(60):
time_string = '%02d:%02d:%02d' % (h,m,s)
if time_string == now.strftime('%H:%m:%S'):
print 'you found it! %s' % time_string
您能否提供有关您为何这样做的更多信息?看起来您在解析日期时间或使用strftime获得所需内容时会好得多,而不是循环60 * 60 * 24次。