如何从Python日期中减去一天?
介绍
由于我们都知道,在需要跟踪日期和时间的应用程序中,修改日期和时间的模块是必不可少的。Python中的 ** DateTime** 模块处理日期和时间(Python日期/时间教程)。Python附带了一个内置的datetime模块。
在进行任何数据修改之前,需要安装两个新的库。
- 可以使用arrow库快速获取日期和时间。
- 可以使用Pandas库访问和使用DataFrame。
转到IDE控制台以安装这些库。在()命令提示符下运行以下代码。本示例中使用的终端的命令提示符以美元符号()表示。您的终端的提示符可能不同。
使用的方法
- time - 它显示时间,独立于任何特定日期,其属性为小时、分钟、秒、微秒和tzinfo。
-
timedelta - 用于操作日期。
-
date - 它根据格里高利历显示日期,其属性为年、月和日。
-
tzinfo - 它提供有关时区的信息。
-
datetime - 它是一组具有属性年、月、日、时、分、秒、微秒和tzinfo的日期和时间。
语法
class datetime.timedelta(days=10, month ,hour, minute, second, microsecond, tzinfo)
Returns: Date
注意 - 如果我们没有指定,默认会将整数视为一个日期。
算法
- 初始化一个字符串,并使用today方法获取当前日期,使用split方法将其拆分为一个列表。
-
声明一个新变量,调用datetime.date()并传入三个参数:当前年份、当前月份和日期。
-
声明一个变量,使用timedelta并传入一个整数,该整数表示从原始日期中减去的天数。
-
返回datetime.date()变量和timedelta变量的差值。
方法1:使用datetime.timedelta()
示例
此方法将当前日期作为字符串获取,并将其拆分为一个列表。然后,配置当前日期(发薪日),并从同一日期中减去十(10)天(datetime.timedelta(10))来返回一个新日期。
#importing necessary functions
import datetime
from datetime import date
import pandas as pd
#storing the value of date.today in a variable today
today = str(date.today()).split('-')
#Declares payday which calls datetime.date() and takes three (3) integer arguments: current year (int(get_today[0])), current month (int(get_today[1]))
payday= datetime.date(int(today[0]), int(today[1]), 25)
#Declares chqday which uses timedelta and passes an integer, (10)
chqday = datetime.timedelta(10)
#Declares n_payday which subtracts payday from chqday
n_payday= payday - chqday
#printing the payday
print("Payday =",payday)
输出
Payday = 2022-11-25
代码解释
声明today变量,获取当前日期(yyyy-mm-dd),并根据连字符(-)拆分日期字符串(split(‘-‘))。这将返回当前日期作为字符串列表[‘2022′, ’05’, ’27’]。声明payday变量,调用datetime.date()函数,并传入三个整数参数:当前年份(int(get_today[0])),当前月份(int(get_today[1]))和日期(25)。声明chqday变量,使用timedelta函数,并传入一个整数参数(10),该参数表示要从原始日期(25)减去的天数。声明n_payday变量,从chqday中减去payday的结果。最后,将n_payday的输出发送到终端。
方法2:使用Pandas减去日期列
示例
如果你想确定两个日期之间的差异,但不想创建一个新的日期?在这个例子中,两个日期相减,结果以天数的差异输出。
#importing important functions
import datetime
from datetime import date
import pandas as pd
#outcome of dataframe is stored in df
df = pd.DataFrame(columns=['hired', 'fired'])
#two rows to the DataFrame df and save the data to the relevant variable (df.hired or df.fired)
df.hired = ['2022-09-07', '2022-10-29']
df.fired = ['2021-09-07', '2022-04-29']
#Datetime object is created from these two lines and stored to the relevant variable stated above
df.hired = pd.to_datetime(df.hired)
df.fired = pd.to_datetime(df.fired)
#storing the difference of df.fired and df.hired in diff.
diff = (df.fired - df.hired)
#printing the diff
print(diff)
输出结果
0 -365 days
1 -183 days
dtype: timedelta64[ns]
代码解释
首先,生成了一个带有招聘和解雇列的DataFrame。结果保存到 df 中。接下来的两行代码向DataFrame df 中添加了两行数据,并将数据保存到相关变量( df.hired 或 df.fired )中。然后从这两行数据创建了一个Datetime对象,并将其存储到上述相关变量中。它计算这两个日期的差,并将结果保存到diff变量中。
结论
** datetime** 是一个包含年、月、日、时、分、秒、微秒等属性的日期和时间集合, ** tzinfo.timedelta()** 用于操作日期。通过计算 timedelta 和 datetime.date 变量之间的差异,可以得到所需的输出,即从Python日期中减去一天。