如何将对象datetime.datetime.now()。time()与12之类的整数进行比较?
我需要创建一个if条件,该条件检查一天中的时间是在12PM之前还是12PM之后,并采取相应的措施。
答案 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 。
如果得到
示例代码:
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")