内置模块之时间模块
内置模块之时间模块
在Python中,通常有这三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串:
-
时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
-
格式化的时间字符串(Format String):'1049-10-1'
-
元组(struct_time):struct_time拥有9个元素:
(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
索引(Index) 属性(Attribute) 值(Values) 0 tm_year(年) 比如2011 1 tm_mon(月) 1 - 12 2 tm_mday(日) 1 - 31 3 tm_hour(时) 0 - 23 4 tm_min(分) 0 - 59 5 tm_sec(秒) 0 - 60 6 tm_wday(weekday) 0 - 6(0表示周一) 7 tm_yday(一年中的第几天) 1 - 366 8 tm_isdst(是否是夏令时) 默认为0
time模块
time模块时老朋友了,我们使用过停顿和时间戳功能:
import time
time.sleep(1) # 程序等待1s后执行
time.time() # 获取当前时间戳
这里介绍几个其他的功能
获取三种时间
时间字符串
time.strftime("%Y-%m-%d %X") # 2022-10-19 16:28:12
time.strftime("%Y-%m-%d %H:%M:%S") # 2022-10-19 16:28:12
# 其中%Y之类是专门用于时间的占位符
Y | m | d | H | M | S | X |
---|---|---|---|---|---|---|
年 | 月 | 日 | 时 | 分 | 秒 | 时:分:秒 |
结构化时间(struct-time)
time.localtime()
"""
time.struct_time(tm_year=2022, tm_mon=10,
tm_mday=19, tm_hour=16, tm_min=33, tm_sec=33,
tm_wday=2, tm_yday=292, tm_isdst=0)
"""
时间戳由计算机识别,时间字符串是给人看的,而结构化时间则方便程序来进行操作并转换为其他两种时间格式。
三种时间类型的转换
时间戳-->结构化时间
time.gmtime(时间戳) # UTC时间,英国伦敦时间
time.localtime(时间戳) # 当地时间
# 两句语句都会得到结构化时间
结构化时间-->时间戳
time.mktime(结构化时间) # 将当地的结构化时间变为时间戳
结构化时间-->字符串时间
time.strftime("格式定义","结构化时间")
# 不传结构化时间默认使用当前时间
time.strftime("%Y-%m-%d %X")
# 传了结构化时间则为结构化时间-->字符串时间
time.strftime("%Y-%m-%d", time.localtime(1555000000))
# 2019-04-12
字符串时间-->结构化时间
time.strptime('时间字符串','字符串对应格式')
# 会根据后面的格式来解析前面字符串中的对应数字
time.strptime('2019-04-12', '%Y-%m-%d')
"""
time.struct_time(tm_year=2019, tm_mon=4,
tm_mday=12, tm_hour=0, tm_min=0, tm_sec=0,
tm_wday=4, tm_yday=102, tm_isdst=-1)
"""
datetime模块
datetime是一种结构化时间,但是它也易于阅读:
如:2022-10-19 16:57:05.461014
利用datetime模块可以对这种结构化时间进行操作。
获取当前时间的datetime格式
from datetime import datetime # 导入datetime包中的datetime模块
# 获取当前本地时间
a = datetime.now()
print('当前日期:', a)
# 获取当前世界时间(本初子午线)
b = datetime.utcnow()
print('世界时间:', b)
用指定日期时间创建datetime
from datetime import datetime
# 用指定日期创建
c = datetime(2008, 8, 8, 20, 0)
print('北京奥运会开幕式:', c)
字符串时间转换成datetime类型
与time模块的strptime一个用法,只不过得到的结构化时间是datetime:
from datetime import datetime
datetime.strptime('时间字符串','对应格式')
将datetime类型转换为字符串
与time模块的strftime一个用法,只不过是用datetime中取到的年月日等来构造字符串:
from datetime import datetime
i = datetime.now() # 获取当前的datetime
i.strftime('%Y年%m月%d日%A,%H时%M分%S秒')
# 将其转换为指定格式的字符串时间
对datetime进行时间计算 (**)
import datetime
ctime = datetime.datetime.today() # 获取当前时间
internal = datetime.timedelta(minutes=30) # 获取一个时间间隔
print(ctime + internal) # 计算得到30分钟后的时间
# 利用这个功能可以做闹钟
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY