Python计算日期时间 - 今天是某个日期时间之间的日期吗?

时间:2017-07-12 09:07:43

标签: python datetime

我有用户在注册后获得6个月的特别优惠。我保存了注册的日期时间,并知道此日期时间+ 6个月是特别优惠。

现在我需要在5个月后显示一个按钮,提醒他们该优惠在1个月内用完。

所以我需要检查datetime.now()是否在范围内:

user1 = datetime(2017,4,30)
user2 = datetime(2017,5,25)
user3 = datetime(2017,1,11) 
user4 = datetime(2017,2,20)
user5 = datetime(2017,12,23)
user6 = datetime(2017,7,22) 

list_of_users = [user1,user2,user3,user4,user5,user6]

for user_date in list_of_users:
    if datetime.now() < user_date + relativedelta(months=6) and datetime.now() > user_date + relativedelta(months=5):
        print user_date, "yes"

我已经创建了一些示例,user5应该在此范围内,但不知何故它不会识别它。

1 个答案:

答案 0 :(得分:2)

你的代码工作得很好,虽然有点冗长。 user5 符合您的标准,数据将来会超过5个月,而不是过去。他们的特价期间尚未开始,更不用说距离到期还有1个月。他们应该只看到 2018年5月23日到6月之间的警告

您可以通过首先存储截止日期并使用链式比较来更简洁地进行测试:

now = datetime.now()
started_min, started_max = now - relativedelta(months=6), now - relativedelta(months=5)
for user_date in list_of_users:
    if started_min <= user_date <= started_max:
         print user_date, "yes"

因此,如果用户在5到6个月之前开始提供优惠,那么现在需要提醒他们,因为他们已经上个月了。