python时间库的使用
一、datetime库
datetime是python处理日期和时间的标准库。
- 获取当前日期
from datetime import datetime, timedelta, timezone
now = datetime.now()
print('%s-%s' % (now, type(now)))
结果:
2023-05-14 16:32:40.271819-<class ‘datetime.datetime’>
- 指定日期和时间
dt = datetime(2022, 9, 16, 9, 0)
print(dt)
print(dt.timestamp()) # 时间戳是一个浮点数
结果:
2022-09-16 09:00:00
1663290000.0
- 计算机中时间实际使用数字表示的从epoch time是1970年1月1日00:00:00 UTC+00:00时区的时刻,记为0。
t = 1663290000.0
print(datetime.fromtimestamp(t)) # 本地时间
print(datetime.utcfromtimestamp(t)) # UTC时间
结果:
2022-09-16 09:00:00
2022-09-16 01:00:00
- 日期与字符串转化
cDay = datetime.strptime('2023-5-14 16:40:00', '%Y-%m-%d %H:%M:%S')
print(cDay)
now = datetime.now()
print(now.strftime('%a, %b %d %H:%M'))
结果:
2023-05-14 16:40:00
Sun, May 14 16:43
- 日期的运算
now = datetime.now()
print(now, now + timedelta(hours=10), now - timedelta(hours=10), now + timedelta(days=2, hours=12))
结果:
2023-05-14 16:45:18.745006 2023-05-15 02:45:18.745006 2023-05-14 06:45:18.745006 2023-05-17 04:45:18.745006
- 本地时间与UTC时间的转换
tz_utc_8 = timezone(timedelta(hours=8))
now = datetime.now()
dt = now.replace(tzinfo=tz_utc_8)
print(dt)
utc_dt = datetime.utcnow().replace(tzinfo=timzone.utc)
print(utc_dt)
bj_dt = utc_dt.astimezone(timezone(timedelta(hours=8)))
print(bj_dt)
结果:
2023-05-14 16:50:36.403480+08:00
2023-05-14 08:50:36.404477+00:00
2023-05-14 16:50:36.404477+08:00