如何比较两个日期?

时间:2011-11-15 19:58:15

标签: python

我如何使用Python比较两个日期以查看哪个日期?

例如,我想检查当前日期是否超过我正在创建的列表中的最后日期,假日日期,以便它会自动发送电子邮件,告知管理员更新holiday.txt文件。

6 个答案:

答案 0 :(得分:410)

使用datetime方法和操作员<及其亲属。

>>> from datetime import datetime, timedelta
>>> past = datetime.now() - timedelta(days=1)
>>> present = datetime.now()
>>> past < present
True
>>> datetime(3000, 1, 1) < present
False
>>> present - datetime(2000, 4, 4)
datetime.timedelta(4242, 75703, 762105)

答案 1 :(得分:59)

使用time

让我们说你的初始日期是这样的字符串:
date1 = "31/12/2015"
date2 = "01/01/2016"

您可以执行以下操作:
newdate1 = time.strptime(date1, "%d/%m/%Y")newdate2 = time.strptime(date2, "%d/%m/%Y")将它们转换为python的日期格式。然后,比较是显而易见的:

newdate1 > newdate2将返回False
newdate1 < newdate2将返回True

答案 2 :(得分:36)

datetime.date(2011, 1, 1) < datetime.date(2011, 1, 2)将返回True

datetime.date(2011, 1, 1) - datetime.date(2011, 1, 2)将返回datetime.timedelta(-1)

datetime.date(2011, 1, 1) + datetime.date(2011, 1, 2)将返回datetime.timedelta(1)

请参阅docs

答案 3 :(得分:1)

python 作为最简单的可用语言,在 python 中比较日期非常容易,python 运算符 std::array<> 非常适合日期时间对象。 他们每个人在python中都有自己的含义:

  • == 表示日期早于第一个
  • > 表示日期晚了
  • < 表示日期与第一个相同 因此,对于您的情况:
==

答案 4 :(得分:0)

使用datetime和比较的其他答案也仅适用于时间,没有日期。

例如,要检查现在是否大于或小于上午8:00,我们可以使用:

import datetime

eight_am = datetime.time( 8,0,0 ) # Time, without a date

然后与之比较:

datetime.datetime.now().time() > eight_am  

这将返回True

答案 5 :(得分:0)

要计算两个日期之间的天差,可以按照以下步骤进行:

import datetime
import math

issuedate = datetime(2019,5,9)   #calculate the issue datetime
current_date = datetime.datetime.now() #calculate the current datetime
diff_date = current_date - issuedate #//calculate the date difference with time also
amount = fine  #you want change

if diff_date.total_seconds() > 0.0:   #its matching your condition
    days = math.ceil(diff_date.total_seconds()/86400)  #calculate days (in 
    one day 86400 seconds)
    deductable_amount = round(amount,2)*days #calclulated fine for all days

因为如果在截止日期之前还有一秒钟,那么我们必须收费