Python 检查两个datetime对象是否相同

Python 检查两个datetime对象是否相同,python,python-3.x,Python,Python 3.x,我试图设置一个特定的时间来运行我的程序中的函数。不幸的是,循环并没有像预期的那样在21时结束。为什么会这样?如果您只想比较日期 import datetime time = datetime.time(21) while True: print(datetime.datetime.now()) if datetime.datetime.now() == time: break 如果你想确认他们是同一天 文档通常很有用。这通常也是我对python的第一个谷歌

我试图设置一个特定的时间来运行我的程序中的函数。不幸的是,循环并没有像预期的那样在21时结束。为什么会这样?

如果您只想比较日期

import datetime

time = datetime.time(21) 

while True:
    print(datetime.datetime.now())
    if datetime.datetime.now() == time:
        break
如果你想确认他们是同一天

文档通常很有用。这通常也是我对python的第一个谷歌搜索结果。除非您的问题是关于名为“snake”的函数/模块。 datetime模块基本上有三种类型用于存储时间点:

  • 年、月、月日的日期

  • 小时、分钟、秒、微秒、时区信息的时间

  • datetime结合了日期和时间。它有方法date()和time() 获取相应的日期和时间对象,有一个方便的 combine函数可将日期和时间合并为datetime。


如果您只想比较日期

import datetime

time = datetime.time(21) 

while True:
    print(datetime.datetime.now())
    if datetime.datetime.now() == time:
        break
如果你想确认他们是同一天

文档通常很有用。这通常也是我对python的第一个谷歌搜索结果。除非您的问题是关于名为“snake”的函数/模块。 datetime模块基本上有三种类型用于存储时间点:

  • 年、月、月日的日期

  • 小时、分钟、秒、微秒、时区信息的时间

  • datetime结合了日期和时间。它有方法date()和time() 获取相应的日期和时间对象,有一个方便的 combine函数可将日期和时间合并为datetime。

输出:

import datetime      

# set the datetime you want the loop to break out 
# datetime.datetime(year, month, date, hour, seconds)

set_dt = datetime.datetime(2019, 2, 8, 18, 19) 

while True:
   print("set date time:", set_dt)
   print(datetime.datetime.now())

   # check if the current date time is greater than the set_dt
   if datetime.datetime.now() > set_dt:
      break
print("out of loop")
编辑:

如果您只希望循环在某个小时发生:

.
. 
.
set date time: 2019-02-08 18:19:00
2019-02-08 18:18:59.999428
set date time: 2019-02-08 18:19:00
2019-02-08 18:18:59.999428
set date time: 2019-02-08 18:19:00
2019-02-08 18:18:59.999428
out of loop
输出:

import datetime      

# set the datetime you want the loop to break out 
# datetime.datetime(year, month, date, hour, seconds)

set_dt = datetime.datetime(2019, 2, 8, 18, 19) 

while True:
   print("set date time:", set_dt)
   print(datetime.datetime.now())

   # check if the current date time is greater than the set_dt
   if datetime.datetime.now() > set_dt:
      break
print("out of loop")
编辑:

如果您只希望循环在某个小时发生:

.
. 
.
set date time: 2019-02-08 18:19:00
2019-02-08 18:18:59.999428
set date time: 2019-02-08 18:19:00
2019-02-08 18:18:59.999428
set date time: 2019-02-08 18:19:00
2019-02-08 18:18:59.999428
out of loop

听起来你只是想比较一下时间:

导入日期时间
时间=日期时间。时间(21)
打印(时间)
尽管如此:
打印(datetime.datetime.now())
如果datetime.datetime.now().hour==time.hour:
打破

如果你真的需要写这篇文章,而不是使用内置的系统调度程序,比如。

听起来你只是想比较一下时间:

导入日期时间
时间=日期时间。时间(21)
打印(时间)
尽管如此:
打印(datetime.datetime.now())
如果datetime.datetime.now().hour==time.hour:
打破

如果你真的需要写这个,而不是使用内置的系统调度程序,比如。

这就是我告诉你要比较
时间
对象的方式吗?!将
time
datetime
进行比较,就像检查
21:00:00
是否等于
2019-02-08 18:07:53.449365
。很明显,它不会打破这个问题的标题并不准确。你问的是如何比较两个小时而不是datetime对象。最好编辑它以获得相关的答案这就是我是如何告诉你比较
时间
对象的?!将
time
datetime
进行比较,就像检查
21:00:00
是否等于
2019-02-08 18:07:53.449365
。很明显,它不会打破这个问题的标题并不准确。你问的是如何比较两个小时而不是datetime对象。最好编辑它以获得相关答案好的答案。您可以稍微简化它,因为datetime对象的hour属性只是一个int,所以不需要创建时间变量。如果条件现在变为
如果datetime.datetime.now().hour==21
@ArranDuff您是正确的。我将答案尽可能地与原始答案保持一致,并将优化留给op。好答案。您可以稍微简化它,因为datetime对象的hour属性只是一个int,所以不需要创建时间变量。如果条件现在变为
如果datetime.datetime.now().hour==21
@ArranDuff您是正确的。我将答案尽可能地与原始答案保持一致,并将优化留给op。