关于python:如何比较两个日期?

How to compare two dates?

我将如何比较两个日期,以确定哪一个是以后的,使用python?

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


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

1
2
3
4
5
6
7
8
9
>>> 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)


使用time

假设您的初始日期是这样的字符串:埃多克斯1〔9〕埃多克斯1〔10〕

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


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)

请参阅文档。


对于计算两个日期差中的天数,可以按如下方式进行:

1
2
3
4
5
6
7
8
9
10
11
12
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

因为如果一秒钟比到期日长,我们就得收费


其他使用datetime和比较的答案也只在时间上有效,没有日期。

例如,要检查现在是早8点还是早8点,我们可以使用:

1
2
3
import datetime

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

稍后与以下内容进行比较:

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

返回True