确定日期时间是中午之前还是之后

时间:2020-05-29 21:39:28

标签: python python-3.x datetime

我正在使用小型测试代码来确定生成的日期时间是否像以下代码一样在正午之前或之后。

mealRepository.save(meal);

问题是,我无法验证new_date是否在正午。可能我在if条件下做错了,对吧?

如果import random from datetime import datetime, timedelta from pytz import timezone current_date = datetime.now(timezone('America/Sao_Paulo')) new_date = current_date - timedelta(days=2) print (new_date.strftime("%Y-%m-%d %H:%M:%S")) while new_date <= current_date: new_date = new_date + timedelta(minutes=10) print (new_date.strftime("%Y-%m-%d %H:%M:%S")) if new_date < datetime.time(12): print("test") 是中午之后,我想打印一些结果,如果是中午到午夜之后,我还要打印一些消息。

有什么建议可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

您只需要比较new_date中的时间(将12转换为datetime对象)。 由于执行导入的方式,使用datetime.time()时意味着您正在调用datetime.datetime.time()而不是datetime.time(),这就是转换失败的原因。 您可以通过

解决此问题
from datetime import datetime, timedelta, time

然后使用

time()

或通过

import datetime as dt

然后在适当的地方使用

dt.datetime(), dt.timedelta(), dt.time()

完整代码:

import random
from datetime import datetime, timedelta, time
from pytz import timezone

current_date = datetime.now(timezone('America/Sao_Paulo'))
new_date = current_date - timedelta(days=2)
print (new_date.strftime("%Y-%m-%d %H:%M:%S"))

while new_date <= current_date:
  new_date = new_date + timedelta(minutes=10)
  print (new_date.strftime("%Y-%m-%d %H:%M:%S"))
  if new_date.time() < time(12):
    print("test")

答案 1 :(得分:0)

与new_date.hour进行比较,而不是datetime.time()

import random
from datetime import datetime, timedelta
from pytz import timezone

current_date = datetime.now(timezone('America/Sao_Paulo'))
new_date = current_date - timedelta(days=2)
print (new_date.strftime("%Y-%m-%d %H:%M:%S"))

while new_date <= current_date:
  new_date = new_date + timedelta(minutes=10)
  print (new_date.strftime("%Y-%m-%d %H:%M:%S"))
  if new_date.hour < 12:
    print("before noon")
  elif new_date.hour >= 18:
    print("after 6 pm")