Python 中两个日期之间的差异

python中的datetime ()构造函数可用于计算python中两个日期之间的差异。我们可以使用 python 中 datetime() 模块中的 timedelta 构造从开始日期减去结束日期。timedelta 构造将 24 小时视为一天。

使用 timedelta 时,我们需要指定小时、分钟和秒,然后将其设置为零才能成功计算。

另请阅读:使用日期时间在 Python 中创建日期范围

日期可以以字符串、日期对象或日期时间对象的形式给出。对于字符串,我们需要将字符串剥离为正确的日期时间格式才能对其进行操作。

在Python中,我们可以通过两种主要方法来查找两个日期之间的差异。让我们一一看看。

要了解有关 datetime() 的更多信息,请访问官方文档

安装日期时间()

如果您的系统中还没有 datetime 模块,则需要在管理员模式下在命令提示符中运行以下代码。

pip install datetime

如果您使用 conda 发行版而不是 pip,那么您将必须采取一些额外的步骤。您已在管理员模式下的命令提示符中运行了以下所有命令。

anaconda login
conda install -c trentonoliphant datetime

显然,anaconda 有时在寻找非常常见的包时遇到一些麻烦

date找出两个物体之间的差异

date当日期没有作为字符串输入给出时,可以直接计算两个 s 之间的差异。让我们看看如何实现这一点:

#importing required modules
from datetime import date
#defining the function for subtracting
def get_difference(startdate, enddate):
    diff = enddate - startdate
    return diff.days
#initializing dates
startdate = date(2023, 2, 20)
enddate = date(2023, 3, 15)
#storing the result and calling the function
days = get_difference(startdate, enddate)
#displaying the result
print(f'Difference is {days} days')

上述代码的输出将是:

Difference is 23 days
2 个日期对象之间的差异。

datetime两个对象之间的差异

在这种情况下,还涉及时间和日期。这里我们必须从日期中去掉时间才能正确计算天数。

#importing required modules
from datetime import datetime
 
# datetime in string format
start_date = '2023/1/20 07:15:30.365020'
end_date = '2023/2/28 05:20:45.193452'
 
#converting the string input to date
start_date1 = datetime.strptime(start_date, "%Y/%m/%d %H:%M:%S.%f")
end_date1 = datetime.strptime(end_date, "%Y/%m/%d %H:%M:%S.%f")
 
# calculating the difference in dates
diff = end_date1-start_date1
#displaying the difference
print(f'Difference is {diff.days} days')

上述代码的输出与第一个代码类似。

Difference is 38 days
2 个日期时间对象之间的差异

另请阅读:使用 Matplotlib 将 RGB 图像转换为灰度图像。

获取用户输入的日期范围

现在,让我们看看如何为每个用户自定义日期输入。

#importing required modules
import datetime
 
#taking user input for start date
styear = int(input('Enter start year='))
stmonth = int(input('Enter start month='))
stday = int(input('Enter start day='))
datestart = datetime.date(styear, stmonth, stday)
print("start date is=",datestart)
#taking user input for end date
endyear = int(input('Enter last year='))
endmonth = int(input('Enter last month='))
endday = int(input('Enter last day='))
dateend = datetime.date(endyear, endmonth, endday)
print("end date is=",dateend)
#defining the function for calculating difference between dates
def get_diff(startdate, enddate):
    diff = enddate - startdate
    return diff.days
#storing the result and calling the function
days = get_diff(datestart, dateend)
#displaying the result
print(f'Difference is {days} days')

上述代码的输出将是:

Enter start year=2023
Enter start month=2
Enter start day=1
start date is= 2023-02-01
Enter last year=2023
Enter last month=3
Enter last day=5
end date is= 2023-03-05
Difference is 32 days
自定义开始和结束日期

相关:在 Python 中比较日期和时间 [简单的一步一步]

概括

本教程是一个完整的指南,指导您使用各种类似日期的对象来计算 python 中两个日期之间的差异。python 中的日期时间操作可以使用名为 datetime 的 python 库来完成。我们可以从 datetime 包中导入 datetime() 构造函数,该构造函数可以与 python 包安装程序 pip 一起使用。也可以使用 conda 安装程序进行安装。