欢迎访问宙启技术站
智能推送

Python函数实现日期和时间处理

发布时间:2023-06-13 03:18:49

Python拥有强大的日期和时间处理库,可以使用官方标准库datetime来处理日期和时间相关的操作,也可以使用第三方库如arrow、pendulum、dateutil等。

1. datetime库的使用

datetime库是Python中标准的日期和时间处理库,通过它可以实现时间的表示、计算、日期格式化等操作。

(1)时间表示

datetime库中定义了三个类来表示时间:date、time和datetime,分别表示日期、时间和日期时间。它们的构造函数如下:

import datetime

d = datetime.date(year, month, day)
t = datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, fold=0)
dt = datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, fold=0)

其中,year、month、day、hour、minute、second、microsecond分别表示年、月、日、时、分、秒、微秒,tzinfo表示时区信息,fold表示可选的闰秒信息。

(2)日期计算

可以对日期进行加减计算,例如:

import datetime

d1 = datetime.date(2021, 9, 1)
d2 = datetime.date(2021, 9, 11)

delta = d2 - d1
print(delta.days)  # 输出:10

(3)日期格式化

可以通过strftime方法将日期格式化为指定的字符串,例如:

import datetime

dt = datetime.datetime.now()

print(dt.strftime('%Y-%m-%d %H:%M:%S'))  # 输出:2021-09-21 10:05:10

2. arrow库的使用

arrow是一个易用的日期和时间处理库,它提供了友好的API和各种可选的输出格式。

(1)时间表示

arrow库中提供的Arrow类用于表示时间,可以通过now、get、datetime等方法获取当前时间、指定时间、转化为datetime等。

import arrow

now = arrow.now()
get = arrow.get('2021-09-01')
datetime = arrow.Arrow(2021, 9, 11, 10, 0, 0)

print(now, get, datetime)  # 输出:2021-09-21T10:13:26.258952+08:00 2021-09-01T00:00:00+00:00 2021-09-11T10:00:00+00:00

(2)日期计算

可以使用replace、shift等方法对日期进行加减计算。

import arrow

dt = arrow.get('2021-09-11')

print(dt.shift(days=10))  # 输出:2021-09-21T00:00:00+00:00

(3)日期格式化

可以使用format方法将日期格式化为指定的字符串,例如:

import arrow

dt = arrow.now()

print(dt.format('YYYY-MM-DD HH:mm:ss'))  # 输出:2021-09-21 10:18:24

3. pendulum库的使用

pendulum是一个较新的Python日期和时间处理库,提供了类似于moment.js的API。

(1)时间表示

pendulum库中提供的DateTime类用于表示时间,可以通过now、parse、create等方法获取当前时间、指定时间、通过年、月、日、时、分、秒获取时间等。

import pendulum

now = pendulum.now()
parse = pendulum.parse('2021-09-01')
create = pendulum.create(2021, 9, 11)

print(now, parse, create)  # 输出:2021-09-21T10:25:17.123641+08:00 2021-09-01T00:00:00+00:00 2021-09-11T00:00:00+00:00

(2)日期计算

可以使用加减号对日期进行加减计算,也可以使用add和subtract方法。

import pendulum

dt = pendulum.parse('2021-09-11')

print(dt.add(days=10))  # 输出:2021-09-21T00:00:00+00:00

(3)日期格式化

可以使用format方法将日期格式化为指定的字符串,例如:

import pendulum

dt = pendulum.now()

print(dt.format('YYYY-MM-DD HH:mm:ss'))  # 输出:2021-09-21 10:40:10

4. dateutil库的使用

dateutil是一个强大的日期和时间处理库,相比于其他库,它提供了更多的解析、转化、计算、格式化等功能。

(1)时间解析

可以使用parser.parse方法将字符串解析为datetime对象。

import dateutil.parser as parser

d = parser.parse('2021-09-01')

print(d)  # 输出:2021-09-01 00:00:00

(2)日期计算

可以对日期进行加减计算。

import dateutil.relativedelta as relativedelta
import datetime

d1 = datetime.datetime(2021, 9, 1)
d2 = datetime.datetime(2021, 9, 11)

delta = relativedelta.relativedelta(d2, d1)

print(delta.days)  # 输出:10

(3)日期格式化

可以使用strftime方法将日期格式化为指定的字符串,例如:

import datetime

d = datetime.datetime.now()

print(d.strftime('%Y-%m-%d %H:%M:%S'))  # 输出:2021-09-21 11:09:24

总之,Python提供了很多处理日期和时间的库,可以根据不同场景选择使用不同的库来实现日期和时间处理。在实际开发中,对日期和时间格式、时区的处理比较重要,需要根据具体需求选择相应的库进行处理。