如何比较两个日期?
- 2025-01-10 08:47:00
- admin 原创
- 120
问题描述:
如何使用 Python 比较两个日期来查看哪个日期更晚?
例如,我想检查当前日期是否超过了我正在创建的假期日期列表中的最后一个日期,以便它自动发送一封电子邮件,告诉管理员更新 holiday.txt 文件。
解决方案 1:
使用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)
解决方案 2:
使用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
解决方案 3:
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)
。
查看文档。
解决方案 4:
使用和比较的其他答案datetime
也仅适用于时间,不适用于日期。
例如,为了检查现在是早上 8 点还是早上 8 点,我们可以使用:
import datetime
eight_am = datetime.time( 8,0,0 ) # Time, without a date
然后与以下进行比较:
datetime.datetime.now().time() > eight_am
这将返回True
解决方案 5:
使用 Python 作为最简单的语言,可以很容易地在 Python 中使用 Python 运算符来比较日期<
,>
并且==
它们与 datetime 对象非常契合。它们每个在 Python 中都有自己的含义:
<
表示日期早于第一个>
表示日期较晚==
表示日期与第一个相同因此,对于您的情况:
import datetime
date = datetime.datetime(2000, 1, 1) # Replace with whatever you want
now = datetime.datetime.now() # You can even find the current date and time using this expression
if date < now:
print('past')
elif date > now:
print('future')
else:
print('present')
# This would print "past"
解决方案 6:
import datetime
from dateutil.parser import parse
# Read in the list of holiday dates as a generator expression
with open('holiday.txt') as f:
holiday_dates = (parse(line.strip()) for line in f)
# Get the current date
today = datetime.datetime.now().date()
# Check if the current date is past the last holiday date
if today > max(holiday_dates).date():
# Send email to admin
print("Please update the holiday.txt file")
我们使用生成器表达式来读取假期日期,该表达式返回一个生成器对象,该对象一次生成一个解析的日期。然后我们使用 max() 函数查找并将最新的假期日期与当前日期进行比较。我们还使用 date() 方法将 datetime 对象转换为日期对象,这使我们能够将它们直接与 today 变量进行比较。
请注意,dateutil.parser.parse() 方法可以处理比 datetime.datetime.strptime() 更广泛的日期格式,因此您可能不需要为文件中的日期指定格式字符串。但是,如果您知道文件中日期的确切格式,您仍然可以使用 strptime() 来解析它们(如果您愿意的话)。
解决方案 7:
要计算两个日期相差的天数,可以按如下方式进行:
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
因为如果截止日期多了一秒,那么我们就必须收费
扫码咨询,免费领取项目管理大礼包!