在Python中访问datetime.now()值

ada*_*ski 3 python time datetime while-loop timedelta

我希望能够在我的程序中实现一个条件,它只能运行N个小时,也许用户可以指定N,但是我们不能超前.

我想我可以使用datetime.now() 并将下面的值存储在变量中,time

>>> time 
>>> time = datetime.datetime(2013, 12, 9, 21, 50, 32, 405329)
Run Code Online (Sandbox Code Playgroud)

关于如何访问( - )之间的第四个字段,看到它是一个字符串的任何想法?

我的条件就像while time != timeEndtimeEnd将是下面的值:

>>> timeEnd = datetime.datetime(2013, 12, 9, 21+N, 50, 32, 405329)

谢谢

jfs*_*jfs 6

now()除非要向本地用户显示,否则不要使用不知道的本地日期时间对象,例如返回的对象.有很多危险.

有一个区别"现在是什么时候?" 和"经过了多少秒?" .前者更容易找到.

要运行N几个小时,您可以:

from time import monotonic as timer # or time.time if it is not available

endtime = timer() + N * 3600
while timer() < endtime:
    # do your thing (mind what clocks use sleep(), join(), lock.acquire())
Run Code Online (Sandbox Code Playgroud)

即使计算机时间在程序执行期间手动或由于DST转换而发生变化,它仍然有效.请参阅Rationalpep-418中的部分time.monotonic以了解Python.

您可以根据需要/可用系统选择其他计时器.例如,您可以使用提供更好精度但可能更快溢出的计时器,或者考虑NTP邻接可能提供比本地CPU更好的时钟或系统处于睡眠或暂停时的时间(想象一下您想要发生什么)几小时后打开笔记本封面后).

datetime.now()如果你想在某个当地时间发生某事,无论从现在开始经过多少秒,例如,在7pm任何一天(午夜之前)之后做某事,对象(天真的故障时间)可能会有用:

from datetime import datetime, time

if datetime.now().time() > time(19):
   # do something
Run Code Online (Sandbox Code Playgroud)