Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Gunakan pendulum pustaka tarikh Python untuk mengendalikan tarikh dan masa

Gunakan pendulum pustaka tarikh Python untuk mengendalikan tarikh dan masa

PHPz
PHPzke hadapan
2023-04-23 14:43:071663semak imbas

一个好用的 Python 日期库 -- pendulum

Mengenai pemprosesan tarikh, Python menyediakan banyak perpustakaan, seperti datetime perpustakaan standard, dateutil perpustakaan pihak ketiga, anak panah, dsb.

Anda perlu memasangnya sebelum menggunakannya, hanya pip pasang pendulum.

Mari kita lihat penggunaan yang pertama ialah penciptaan tarikh, tarikh, masa.

import pendulum
dt = pendulum.datetime(
 2022, 3, 28, 20, 10, 30)
print(dt.__class__)
print(dt)
"""
<class 'pendulum.datetime.DateTime'>
2022-03-28T20:10:30+00:00
"""
# 创建的对象是 DateTime 类型
# 并且带有时区,默认是 UTC
# 我们可以换一个时区
dt = pendulum.datetime(
 2022, 3, 28, 20, 10, 30, tz="Asia/Shanghai")
print(dt)
"""
2022-03-28T20:10:30+08:00
"""
# 如果不想要时区,那么指定 tz=None
dt = pendulum.datetime(
 2022, 3, 28, 20, 10, 30, tz=None)
print(dt)
"""
2022-03-28T20:10:30
"""
# 然后是 date 的创建
d = pendulum.date(2022, 3, 28)
print(d.__class__)
print(d)
"""
<class 'pendulum.date.Date'>
2022-03-28
"""
# time 的创建
t = pendulum.time(20, 10, 30)
print(t.__class__)
print(t)
"""
<class 'pendulum.time.Time'>
20:10:30
"""

Apabila membuat tarikh masa, zon waktu lalai kepada UTC. Jika anda tidak mahu zon waktu, atau anda mahu zon waktu menjadi zon waktu tempatan, pendulum juga menyediakan dua kaedah.

import pendulum
# 创建 datetime 时设置为本地时区
# 还是调用了 pendulum.datetime 函数
# 但是 tz 被设置成了 pendulum.local_timezone()
dt = pendulum.local(
 2022, 3, 28, 20, 10, 30)
print(dt)
"""
2022-03-28T20:10:30+08:00
"""
print(pendulum.local_timezone())
"""
Timezone('Asia/Shanghai')
"""
# 创建 datetime 时不设置时区
# 内部也是调用了 pendulum.datetime 函数
# 但是 tz 为 None
dt = pendulum.naive(2022, 3, 28, 20, 10, 30)
print(dt)
"""
2022-03-28T20:10:30
"""

Kemudian pendulum juga menyediakan beberapa kaedah, seperti mencipta tarikh masa, tarikh, dll.

import pendulum
# 创建当前的 datetime
# 默认是本地时区,但时区可以指定
dt = pendulum.now()
print(dt)
"""
2022-05-29T20:40:49.632182+08:00
"""
# 创建当前的 date,但返回的仍是 datetime
# 只不过时分秒均为 0,同样可以指定时区
dt = pendulum.today()
print(dt)
"""
2022-05-29T00:00:00+08:00
"""
# 获取明天对应的 date
# 返回的是 datetime,时分秒为 0
# 时区可以指定,默认是本地时区
dt = pendulum.tomorrow()
print(dt)
"""
2022-05-30T00:00:00+08:00
"""
# 获取昨天对应的 date
dt = pendulum.yesterday()
print(dt)
"""
2022-05-28T00:00:00+08:00
"""

Kami juga boleh mencipta berdasarkan cap masa atau rentetan:

import pendulum
# 根据时间戳创建
dt1 = pendulum.from_timestamp(1653828466)
dt2 = pendulum.from_timestamp(1653828466,
 tz=pendulum.local_timezone())
print(dt1)
print(dt2)
"""
2022-05-29T12:47:46+00:00
2022-05-29T20:47:46+08:00
"""
# 根据字符串创建
dt1 = pendulum.parse("2020-05-03 12:11:33")
dt2 = pendulum.parse("2020-05-03 12:11:33",
tz=pendulum.local_timezone())
print(dt1)
print(dt2)
"""
2020-05-03T12:11:33+00:00
2020-05-03T12:11:33+08:00
"""

Kami telah selesai bercakap tentang penciptaan tarikh, tarikh dan masa, dan kemudian mari kita lihat operasi yang mereka sokong Ini juga merupakan bahagian teras.

Operasi berkaitan tarikh masa

Terdapat banyak operasi, kami akan memperkenalkannya satu persatu.

import pendulum
dt = pendulum.local(
 2022, 3, 28, 20, 10, 30)
# 获取 date 部分和 time 部分
print(dt.date())
print(dt.time())
"""
2022-03-28
20:10:30
"""
# 替换掉 dt 的某部分,返回新的 datetime
# 年月日时分秒、以及时区都可以替换
print(dt.replace(year=9999))
"""
9999-03-28T20:10:30+08:00
"""
# 转成时间戳
print(dt.timestamp())
"""
1648469430.0
"""
# 返回年、月、日、时、分、秒、时区
print(dt.year, dt.month, dt.day)
print(dt.hour, dt.minute, dt.second)
print(dt.tz)
"""
2022 3 28
20 10 30
Timezone('Asia/Shanghai')
"""

Kemudian rentetan dijana Objek bandul.DateTime boleh ditukar kepada rentetan tarikh dalam pelbagai format.

import pendulum
dt = pendulum.local(
 2022, 3, 28, 20, 10, 30)
# 下面四个最为常用
print("datetime:", dt.to_datetime_string())
print("date:", dt.to_date_string())
print("time:", dt.to_time_string())
print("iso8601:", dt.to_iso8601_string())
"""
datetime: 2022-03-28 20:10:30
date: 2022-03-28
time: 20:10:30
iso8601: 2022-03-28T20:10:30+08:00
"""
# 当然还支持很多其它格式,不过用的不多
# 随便挑几个吧
print("atom:", dt.to_atom_string())
print("rss:", dt.to_rss_string())
print("w3c:", dt.to_w3c_string())
print("cookie:", dt.to_cookie_string())
print("rfc822:", dt.to_rfc822_string())
"""
atom: 2022-03-28T20:10:30+08:00
rss: Mon, 28 Mar 2022 20:10:30 +0800
w3c: 2022-03-28T20:10:30+08:00
rfc822: Mon, 28 Mar 22 20:10:30 +0800
"""

Kita kadang-kadang perlu menentukan hari dalam minggu tarikh semasa, hari apa dalam tahun semasa, dll. Pendulum juga telah membungkusnya untuk kita.

import pendulum
dt = pendulum.local(
 2022, 3, 28, 20, 10, 30)
# 返回星期几
# 注意:星期一到星期天分别对应 1 到 7
print(dt.isoweekday())# 1
# 返回一年当中的第几天
# 范围是 1 到 366
print(dt.day_of_year)# 87
# 返回一个月当中的第几天
print(dt.days_in_month)# 31
# 返回一个月当中的第几周
print(dt.week_of_month)# 5
# 返回一年当中的第几周
print(dt.week_of_year)# 13
# 是否是闰年
print(dt.is_leap_year())# False

Langkah terakhir ialah operasi tarikh, yang merupakan bahagian bandul yang paling berkuasa Mengenai mengapa ia berkuasa, kita akan tahu selepas kita menunjukkannya.

import pendulum
dt = pendulum.local(
 2022, 3, 30, 20, 10, 30)
# 返回下一个月的今天
print(dt.add(months=1))
"""
2022-04-30T20:10:30+08:00
"""
# 返回上一个月的今天
# 但是上一个月是 2 月,并且是平年
# 所以最多 28 天
print(dt.add(months=-1))
"""
2022-02-28T20:10:30+08:00
"""
# 我们看到处理的非常完美
# 该方法的原型如下,年月日时分秒都是支持的,当然还有星期也支持
"""
def add(
 self,
 years=0,
 months=0,
 weeks=0,
 days=0,
 hours=0,
 minutes=0,
 seconds=0,
 microseconds=0,
):
"""

Seperti tarikh masa modul terbina dalam Python, apabila menambah tarikh, ia menyokong sehingga hari Kami tidak boleh mengira tarikh minggu depan, bulan depan, atau tahun depan. Dan bandul mudah dikendalikan, itulah yang paling saya suka tentangnya.

Sudah tentu, nilai positif dalam tambah adalah bersamaan dengan memindahkan tarikh ke belakang;

Kemudian anda juga boleh menolak dua tarikh:

import pendulum
dt1 = pendulum.local(
 2021, 1, 20, 11, 22, 33)
dt2 = pendulum.local(
 2022, 3, 30, 20, 10, 30)
period = dt2 - dt1
# 返回的是 Period 对象
# 相当于 datetime 模块里面的 timedelta
print(period.__class__)
"""
<class 'pendulum.period.Period'>
"""
# 但是功能方面,Period 要强大很多
# 两者差了多少年
print(period.in_years())# 1
# 两者差了多少个月
print(period.in_months())# 14
# 两者差了多少个星期
print(period.in_weeks())# 62
# 两者差了多少天
print(period.in_days())# 434
# 两者差了多少个小时
print(period.in_hours())# 10424
# 两者差了多少分钟
print(period.in_minutes())# 625487
# 两者差了多少秒
print(period.in_seconds())# 37529277

Fungsi ini sangat berkuasa dalam modul datetime Python hanya boleh mengira bilangan perbezaan hari antara dua tarikh paling banyak, dan di sini Tahun, bulan, hari, jam, minit dan saat boleh digunakan.

Di atas adalah kandungan artikel ini, sudah tentu, fungsi pendulum sebenarnya lebih daripada yang kami nyatakan di atas. Jika anda berminat, anda boleh merujuk kepada laman web rasmi, tetapi ini adalah yang paling biasa yang terpakai.

Atas ialah kandungan terperinci Gunakan pendulum pustaka tarikh Python untuk mengendalikan tarikh dan masa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam