关于日期处理,Python 提供了很多的库,比如标准库 datetime等。
这里介绍一个非常简易处理日期的库 pendulum,比起datetime来说简单多了。
在使用之前需要先安装,直接 pip install pendulum 即可。
下面来看一下用法,首先是 datetime, date, time 的创建。
import pendulum as plm
dt = plm.datetime(2022,7,16,19,00,00)
dt
DateTime(2022, 7, 16, 19, 0, 0, tzinfo=Timezone('UTC'))
创建的对象是 DateTime 类型; 并且带有时区,默认是 UTC; 可以换一个时区,如亚洲的上海:"Asia/Shanghai"
plm.datetime(2022,7,15,19,00,00,tz="Asia/Shanghai") #如果不想要时区,那么指定 tz=None
DateTime(2022, 7, 15, 19, 0, 0, tzinfo=Timezone('Asia/Shanghai'))
d = plm.date(2022,7,16)
d
Date(2022, 7, 16)
t = plm.time(19,0,1)
t
Time(19, 0, 1)
注意:在创建时如7月,最好不要写成07,而是直接写成7,时分秒也一样。
当想创建本地时区的datetime时还可以用下面的两种方式:
plm.local(2022, 7, 16,19,14, 0)
DateTime(2022, 7, 16, 19, 14, 0, tzinfo=Timezone('Asia/Shanghai'))
plm.naive(2022, 3, 28, 20, 10, 30)
DateTime(2022, 3, 28, 20, 10, 30)
当想创建当前时间时,可以使用now()
now = plm.now()
print(now)
2022-07-16T19:53:58.192071+08:00
plm.today()
DateTime(2022, 7, 16, 0, 0, 0, tzinfo=Timezone('Asia/Shanghai'))
plm.tomorrow()
DateTime(2022, 7, 17, 0, 0, 0, tzinfo=Timezone('Asia/Shanghai'))
plm.yesterday()
DateTime(2022, 7, 15, 0, 0, 0, tzinfo=Timezone('Asia/Shanghai'))
a = "2022-07-16 19:23:32"
b = plm.parse(a)
b
DateTime(2022, 7, 16, 19, 23, 32, tzinfo=Timezone('UTC'))
b.date()
Date(2022, 7, 16)
b.time()
Time(19, 23, 32)
b.replace(year=2021)
DateTime(2021, 7, 16, 19, 23, 32, tzinfo=Timezone('UTC'))
b.replace(month=9)
DateTime(2022, 9, 16, 19, 23, 32, tzinfo=Timezone('UTC'))
b.replace(day=5)
DateTime(2022, 7, 5, 19, 23, 32, tzinfo=Timezone('UTC'))
b.replace(hour=5)
DateTime(2022, 7, 16, 5, 23, 32, tzinfo=Timezone('UTC'))
b.timestamp()
1657999412.0
b.to_datetime_string()
'2022-07-16 19:23:32'
b.to_date_string()
'2022-07-16'
b.to_time_string()
'19:23:32'
now = plm.now()
now
DateTime(2022, 7, 16, 19, 53, 58, 443400, tzinfo=Timezone('Asia/Shanghai'))
now.isoweekday() #返回星期几,1~7
6
now.day_of_year #判断当前日期是一年中的第几天
197
now.week_of_month #判断当前日期是当月中的第几周
3
now.week_of_year #判断当前日期是当年中的第几周
28
now.is_leap_year() #判断是否闰年,注意要加括号
False
now.add(months=3) #当前月加上3个月后是几月份
DateTime(2022, 10, 16, 19, 53, 58, 443400, tzinfo=Timezone('Asia/Shanghai'))
now.add(months=-2) #前2个月是几月份
DateTime(2022, 5, 16, 19, 53, 58, 443400, tzinfo=Timezone('Asia/Shanghai'))
add 里面的值为正,相当于日期往后退;值为负,相当于日期往前推。
其他的参数有:years=0, months=0, weeks=0, days=0, hours=0, minutes=0, seconds=0, microseconds=0。
两个日期的加减计算也可以。
dt1 = plm.local(2021, 1, 20, 11, 22, 33)
dt2 = plm.now()
p = dt2 - dt1
# 计算两者差了多少年print(p.in_years())
1
# 两者差了多少个月print(p.in_months())
17
# 两者差了多少个星期print(p.in_weeks())
77
# 两者差了多少天print(p.in_days())
542
# 两者差了多少个小时print(p.in_hours())
13016
# 两者差了多少分钟print(p.in_minutes())
780991
# 两者差了多少秒print(p.in_seconds())
46859485
还可以输入200个字
蝈蝈派【海南省教改项目(Hnjg2022-80)支持】 网站版权所有
Python remained the copyright of our website