从0:0:0到23:59:59获取Python中的时间列表,然后与datetime值进行比较

时间:2013-04-09 03:46:17

标签: python list datetime time

我正在编写代码,以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)进行比较。

谢谢!

2 个答案:

答案 0 :(得分:0)

关于如何获取24小时工作日的增量值列表,有一个很棒的answer。我重复了一部分。

  • 注1 。我不确定您是如何考虑将timedatetime进行比较的。假设你只是要比较时间部分并提取它。
  • 注2 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次。