如何在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()并接受三个 (3) 个整数参数:当前年份 (int(get_today[0]))、当前月份 (int(get_today[1])) 和日期 (25)。声明chqday,它使用timedelta并传递一个整数 (10),表示要从原始日期 (25) 中减去的日期数。声明n_payday,它从chqday中减去payday。最后,将n_paydy的输出发送到终端。

方法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.hireddf.fired) 中。然后,从这两行创建一个Datetime对象,并将其存储到上面提到的相关变量中。它减去这两个日期并将结果保存到diff中。

结论

datetime是日期和时间的集合,其属性包括年份、月份、日期、小时、分钟、秒、微秒和tzinfo.timedelta()用于操作日期。计算timedeltadatetime.date变量之间的差值以返回所需的输出,即从Python日期中减去一天。

更新于:2023年8月27日

27K+ 浏览量

启动您的职业生涯

通过完成课程获得认证

开始
广告