我正在编写代码以生成一整天的时间,间隔为 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。
谢谢!
关于如何获取 24 小时内秒数的增量值列表,有一个很好的答案。我重用了其中的一部分。
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
您是否有理由要使用日期时间而不是仅使用 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 次。