如何将DateTime对象与整数进行比较?

时间:2019-10-04 20:00:43

标签: python python-3.x

如何将对象datetime.datetime.now()。time()与12之类的整数进行比较?

我需要创建一个if条件,该条件检查一天中的时间是在12PM之前还是12PM之后,并采取相应的措施。

6 个答案:

答案 0 :(得分:3)

简单:您不知道。您创建一个datetime对象进行比较:

import datetime
a = datetime.datetime.now().time()
b = datetime.time(12, 00, 00, 000000)
if a < b:
     print("Do x here")
else:
      print("Do y here")

答案 1 :(得分:2)

d = datetime.datetime.now().time()
if d.hour > 12:
...

答案 2 :(得分:1)

可以使用.strftime("%p")轻松检查。请看下面的例子。

  

基于您所在地区的时间可能有所不同,但是您仍然可以针对不同的时区进行测试。检查 pytz

如果得到

  1. PM ,这意味着,包括下午12点(午夜之前)
  2. AM ,这意味着它是在下午12点之前(从午夜开始)
  

示例代码:

import datetime

now = datetime.datetime.now() 
print(now) # 2019-10-04 22:11:46.655252
print(now.strftime("%p")) # PM
print(now.time().strftime("%p")) # PM

答案 3 :(得分:1)

除了上述解决方案之外,您还可以执行以下操作:

import time
d = time.localtime()
if d.tm_hour > 12 && d.tm_sec>0:
   ...

thread讨论了为什么使用time模块可能比datetime更好。

答案 4 :(得分:1)

datetime.time()类具有可用于目的的小时属性。

import datetime

datetime_object = datetime.datetime.now().time()

if datetime_object.hour >= 12:
    print("Wow it's after 12 pm")
else:
    print("Wow it's before 12 pm")

答案 5 :(得分:1)

您不能直接将datetime实例与整数 进行比较,但是可以先使用timestamp()方法将其转换为整数,然后将其转换为整数。浮点值,然后使用内置的round()函数将其转换为整数。

在下面的代码中,创建了代表当天中午的整数,然后将其与代表当前日期和时间的整数进行比较。

由于这需要一个或多个中间步骤,因此,仅创建代表当天当天中午12点的datatime对象并将其与当前日期和时间进行比较可能会更有效(就像您自己做的那样)答案)。

import datetime

now = datetime.datetime.now()
noon = datetime.datetime(now.year, now.month, now.day, hour=12)

noon_today = round(noon.timestamp())  # Convert to integer.
now_as_int = round(now.timestamp())

if now_as_int < noon_today:
     print("before noon")
else:
     print("noon or later")