2016-08-13 70 views
-1

我有下面这段代码使用time.strf()来获取当前时间,并且建筑:

interval_time=int(input('how many seconds each interval?')) 
print(time.strftime("%H:%M")) 
while time.strftime("%H:%M")!=str('19:45'): 
    time.sleep(interval_time) 
    winsound.PlaySound("SystemExit",winsound.SND_ALIAS)  
winsound.PlaySound("SystemEnter",winsound.SND_ALIAS) 

的事情是,我知道如何获得当前时间。我希望它看起来是这样的:

while *script_first_ran_time*!=*script_first_ran_time+30minutes* 

我知道如何转换分钟,但它不断重新评估目前的时间,再加上30分钟到它。我如何使初始time.strf()保持不变?

非常感谢!

+0

如果你是羽绒球投票,请解释为什么 – Tak

回答

0

你已经决定通过使用时间的字符串表示来使这个任务变得更加困难。由于这些字符串没有日期的概念,因此对它们执行与日期相关的操作是很麻烦的。另外,您应该使用专门设计用于处理日期和时间的专用库,即datetime

样板代码应该是这样的:

​​

这里,datetime.now返回表示当前时间的特殊对象。 timedelta返回特殊对象,当从datetime实例添加或减去时,返回另一个datetime,根据timedelta的状态在时间上移位。

另外注意,我从不等于更大的改变你的条件比 - 它会停止处理,即使你不会准确击中你的时间点(和毫秒级,你会必须非常幸运才能达到这个目标)。

+0

首先,非常感谢你的回答!虽然这是一种不同的方法,但它仍然是一个可教的时刻。我想知道,你说这个任务更难。我如何使用整数的时间? – Tak

+0

您可以重复使用[此答案](http://stackoverflow.com/questions/5998245/get-current-time-in-milliseconds-in-python)以数字形式获取当前时间戳。不过,我不明白如何使用原始时间戳比使用日期时间模块更容易。 –

+0

那只是出于好奇,今天已经学到了一件新事物,为什么不是另一个?非常感谢你! – Tak