在 Python 中,表示时间的格式一共有 3 种:时间戳、结构化时间、格式化时间,2 个模块:time、datetime。
一、3 种时间格式,4 种生成方式
1、时间戳 - 记录时间
时间戳表示的是从 1970 年 1 月 1 日 00:00:00 开始按秒计算的偏移量。
import time
time.time() # 时间戳
# 输出:1659682465.1875775
这种方式得到的时间,一般用来数据库存储,非常节省存储空间。
2、结构化的时间 - 使用时间
所谓结构化时间,你可以理解成把时间进行了分类,分为了:年月日时分秒,你想用哪个类别,就可以直接取出哪个类别。
如果我们想取出一个时间片段,用这个方法就很简单了,例如:取出当前时间的分钟数。
import time
time.localtime().tm_min # 结构化时间
# 输出:30
3、格式化的时间 - 展示时间
这个方法,用来给用户展示时间。
import time
time.strftime('%Y-%m-%d %H-%M-%S %A')# 格式化时间
# 输出:'2022-08-04 19-08-35 Friday'
import datetime
datetime.datetime.now()#格式化时间
# 输出:datetime.datetime(2022, 8, 4, 19, 9, 0, 328515)
二、2 个模块:time,为什么有 datetime 模块?
在前面生成时间的代码中,我们使用了 2 个模块:time 和 datetime,好像它们之间的功能也是重复的。
既然有了 time 模块,为什么还要有 datetime?那是为了简化 time 的使用。
datatime 模块重新封装了 time 模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo。
应用场景
在定时任务中,我想设置一个一周后提醒我的功能。
如果用 time 模块进行实现
import time
time.time() + 7*24*60*60 # 7天*24小时*60分钟*60秒
需要自己计算出 7 天后的时间戳,而如果使用 datetime 模块,这件事就很简单了:直接 days + 7
,如下图代码所示。
import datetime
datetime.datetime.now() + datetime.timedelta(days=7)#格式化时间
三、互相之间的转换
时间戳和结构化数据、字符串数据之间,可以进行转换。这一点的注意事项见上图,这里不再赘述。
作者:程序员晚枫