0

我正在编写代码以生成一整天的时间,间隔为 30 秒。我尝试使用 DT.datetime 和 DT.time 但我总是以 datetime 值或 timedelta 值结束,例如 (0,2970)。有人可以告诉我如何做到这一点。

所以我需要一个包含以下数据的列表:

[00:00:00] [00:00:01] [00:00:02]

直到 [23:59:59] 并且需要将其与日期时间值进行比较,例如 2011 年 6 月 23 日上午 6:38:00。

谢谢!

4

2 回答 2

0

关于如何获取 24 小时内秒数的增量值列表,有一个很好的答案。我重用了其中的一部分。

  • 注 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
于 2013-04-09T04:10:57.570 回答
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 次。

于 2013-04-09T04:15:20.747 回答