当前位置: 欣欣网 > 码农

Python时间处理大师,让你多活10年!

2024-05-24码农

Pendulum是简化了日期和时间操作的Python库。它合并了 datetime time 的功能,提供了人性化的时间操作接口,同时支持时区处理,使得时间操作更加直观和方便。

「安装」

pip install pendulum

获取当前时间

import pendulum
now = pendulum.now()
print(now) # 输出当前时间,例如:2021-10-04T12:10:59+08:00

获取昨天、今天和明天

yesterday = pendulum.yesterday()
today = pendulum.today()
tomorrow = pendulum.tomorrow()
print(yesterday) # 昨天的时间
print(today) # 今天的时间
print(tomorrow) # 明天的时间

计算时间差

diff_days = today.diff(yesterday).in_days()
diff_hours = today.diff(yesterday).in_hours()
print(diff_days) # 输出相差天数,例如:1
print(diff_hours) # 输出相差小时数,例如:24

创建时区特定的时间

dt1 = pendulum.datetime(2021103)
print(dt1.timezone.name) # 默认时区:UTC
dt2 = pendulum.datetime(2021103, tz='Asia/Shanghai')
print(dt2.timezone_name) # 指定时区:Asia/Shanghai

不同时区的时间比较和转换

first = pendulum.datetime(2012952326110, tz='America/Toronto')
second = pendulum.datetime(2012952026110, tz='America/Vancouver')
print(first.timezone_name) # America/Toronto
print(second.timezone_name) # America/Vancouver
# 时区相差3小时,但时间点相同
print(first == second) # True
print(first.diff(second).in_hours()) # 3

时区切换

in_perk = pendulum.now("Asia/Shanghai")
print(in_perk.in_timezone("America/New_York"))

比较时间

first = pendulum.datetime(20121310)
second = pendulum.datetime(2012210)
print(first < second) # True

计算时间差

period = first.diff(second)
print(period) # Period对象,表示时间差

时间增减

dt = pendulum.datetime(2012131)
dt = dt.add(years=5)
print(dt) # '2017-01-31 00:00:00'

时间调整

计算起始和结束时间

dt = pendulum.datetime(20121311200)
print(dt.start_of('day')) # '2012-01-31 00:00:00'
print(dt.end_of('day')) # '2012-01-31 23:59:59'

获取特定星期的日期

dt = pendulum.datetime(20121311200)
print(dt.next(pendulum.WEDNESDAY)) # 下一个星期三的日期

时间转字符串

格式化时间输出

dt = pendulum.datetime(19751225141516)
print(dt.to_datetime_string()) # '1975-12-25 14:15:16'
print(dt.to_formatted_date_string()) # 'Dec 25, 1975'

解析字符串为时间

dt = pendulum.parse('1975-05-21T22:00:00')
print(dt) # '1975-05-21T22:00:00+00:00'

人性化时间表示

显示人性化时间差

print(pendulum.now().subtract(days=1).diff_for_humans()) # '1 day ago'

支持多语言

pendulum.set_locale('zh')
print(pendulum.now().subtract(days=1).diff_for_humans()) # '1天前'