使用Python处理日期和时间

处理日期和时间是任何编程语言的组成部分。Python具有包含datetime模块的标准库,该模块具有几乎所有用于实现涉及日期和时间的计算的功能。在以下示例中,我们将看到如何实现日期时间的各个方面。

处理当前日期

datetime模块具有一个名为datetime的类。我们可以导入此类并使用其功能创建日期时间对象。然后应用各种格式化技术来显示日期和时间值。因此,首先我们创建一个使用now()函数初始化的datetime对象。该对象保存当前日期和时间的所有部分,然后我们操纵它的不同部分。

示例

from datetime import datetime
dt_time_obj = datetime.now()
# Print the current date time
print(dt_time_obj)
# Find the object class
print('Object Class :- ',type(dt_time_obj))

输出结果

运行上面的代码给我们以下结果-

2020-01-22 09:33:02.693863
Object Class :-

日期时间和字符串

我们可以使用strptime和strftime方法将字符串转换为datetime并将datetime转换为字符串。当我们处理不同的数据源时,这种转换是必需的,在这些数据源中,数据可能无法以python所需的确切格式呈现为日期时间。在下面的示例中,我们将一个字符串并将其转换为日期时间。并且也做相反的动作。

示例

from datetime import datetime
dt_string = '2020-1-30 2-52-59'

# Create date object from String
date_val = datetime.strptime(dt_string, "%Y-%m-%d %H-%M-%S")

print(date_val)
print('Class: ',type(date_val))
print("\n")
# Create String from Date Object
date_val_str = datetime.strftime(date_val, "%Y-%m-%d %H-%M-%S")
print(date_val_str)
print('Class: ',type(date_val_str))

输出结果

运行上面的代码给我们以下结果-

2020-01-30 02:52:59
Class:
2020-01-30 02-52-59
Class:

提取日期时间值的一部分

我们可以使用指令和strftime方法提取日期的不同部分。以下是有关不同指令及其用途的一些示例的列表。有关所有指令的完整列表,请参阅python文档

指示
用法
%A
平日
%B

%M
分钟
%Y

%d
每月的一天

以下示例显示了如何使用伪指令。

示例

from datetime import datetime
dt_string = '2020-1-30 2-52-59'
# Create date object from String
date_val = datetime.strptime(dt_string, "%Y-%m-%d %H-%M-%S")
#Return the year and name of weekday, month,Day of month:
print(date_val.year)
print(date_val.strftime("%d"))
print(date_val.strftime("%B"))
print(date_val.strftime("%A"),"\n")

输出结果

运行上面的代码给我们以下结果-

2020
30
January
Thursday

日期时间算术

接下来,我们将看到有关日期和时间的计算示例。我们可以从给定日期添加和减去天,小时等。我们也可以将日期作为输入,并对其进行各种操作。

使用TimeDelta

#import datetime
from datetime import *

# Find current time
dt_time_today = datetime.now()
print ("Today's date: ", str(dt_time_today))

#add 5 days to current
new_date = dt_time_today + timedelta(days = 5)
print('After 5 days: ', new_date)

#Remove 2 weeks from current date
two_weeks_back = dt_time_today - timedelta(weeks = 2)
print('Two weeks ago: ', two_weeks_back)
print('two_weeks_back object type: ', type(two_weeks_back))

输出结果

运行上面的代码给我们以下结果-

Today's date: 2020-01-29 12:38:03.290795
After 5 days: 2020-02-03 12:38:03.290795
Two weeks ago: 2020-01-15 12:38:03.290795
two_weeks_back object type:

使用运算符

我们可以在两个日期之间应用一些运算符。可以使用减号运算符找出日期差,并可以使用逻辑运算符比较日期。

示例

from datetime import datetime

# Given Dates
date1 = datetime(2018,5, 12, 8, 11, 53)
date2 = datetime(2017, 6, 16, 12, 43, 27)

# Difference between two dates
date_diff = date1-date2
print("Difference: ", date_diff)

# Comparing two dates
print(date1 < date2)

输出结果

运行上面的代码给我们以下结果-

Difference: 329 days, 19:28:26
False