python中时间处理主要使用的库是datetime,datetime是内置模块,不需要安装,直接使用
import datetime
datetime里面有五个类:
- date类:表示日期的类
- time类:表示时间的类
- datetime类:表示时间日期的类
- timedelta类:表示两个datetime对象的差值;
- tzinfo类:表示时区的相关信息
python 中处理时间日期主要通过 datetime
模块和 time
模块来实现。这两个模块提供了丰富的函数和类来处理日期和时间。下面分别介绍这两个模块的基本用法。
1. datetime 模块
datetime
模块提供了处理日期和时间的类。其中,datetime
类是最常用的,它表示日期和时间。
获取当前日期和时间
from datetime import datetime
now = datetime.now()
print("当前日期和时间:", now)
#获取今天
datetime.today()
#获取指定日期
datetime.date(y,m,d)
datetime.time(h,m,s)
datetime(y,m,d,h)
#输出指定格式
print('strftime():', now.strftime("%Y-%m-%d"))
timedelta的使用
from datetime import datetime
now = datetime.now()
y = now + timedelta(days=-1) # 昨天
m = now + timedelta(days=1) # 明天
日期时间的格式化
datetime
对象可以使用 strftime()
方法来格式化日期时间。
print(now.strftime("%Y-%m-%d %H:%M:%S")) # 年-月-日 时:分:秒
日期时间的解析
使用 strptime()
方法可以将字符串解析为 datetime
对象。
from datetime import datetime
date_string = "2023-04-01 12:00:00"
date_time_obj = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print(date_time_obj)
日期时间的加减
datetime
对象支持加减操作,可以直接加上或减去 timedelta
对象。
from datetime import datetime, timedelta
now = datetime.now()
one_day_later = now + timedelta(days=1)
print("一天后:", one_day_later)
2. time 模块
time
模块提供了各种与时间相关的函数。它主要用于处理时间戳(自纪元(通常是1970年1月1日)以来的秒数)。
获取当前时间戳
import time
timestamp = time.time()
print("当前时间戳:", timestamp)
将时间戳转换为本地时间
local_time = time.localtime(timestamp)
print("本地时间:", local_time)
# 转换为易读的格式
readable_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print("易读的本地时间:", readable_time)
休眠(暂停)
time.sleep()
函数可以让程序暂停执行指定的秒数。
print("开始")
time.sleep(2) # 暂停2秒
print("结束")
案例
# python3
#! coding=utf8
import datetime
year,month,day= 2022,3,15
weekday = ['周一','周二','周三','周四','周五','周六','周日']
i = datetime.date(year,month,day).weekday()
print(weekday[i])
i = datetime.date(year,month,day).isoweekday()
print(weekday[i-1])
wday = datetime.date(year,month,day).strftime('%a')
print(wday)
扩展,一个用来计算农历的库
zhdate
安装
pip install zhdate
#! python3
#! encoding=utf8
from datetime import datetime
import zhdate
'''
pip install zhdate
计算农历, 公历和农历的转换
内置1900-2100的农历数据
'''
date_now = zhdate.ZhDate.today()
print(date_now)
date_1 = zhdate.ZhDate(2022,1,1)
print(date_1)
date_2 = date_1.to_datetime()
print(date_2.date())
#计算距离端午节还有几天
zhdwj = zhdate.ZhDate(2022,5,5)
dwj = zhdwj.to_datetime()
now_day = datetime.now()
total = dwj.toordinal() - now_day.toordinal()
print(f'今天{now_day.strftime("%Y-%m-%d")}距离{zhdwj.chinese()}-端午节还有{total}天')
总结
datetime
模块主要用于处理日期和时间,提供了丰富的类和方法来创建、解析、格式化日期时间对象,以及进行日期时间的加减运算。time
模块主要用于处理时间戳,提供了将时间戳转换为本地时间、休眠等功能。