Python-time库的使用
time库的相关了解
时间元组(struct_time )
Python函数用一个元组装起来的9组数字处理时间
序号 | 字段 | 属性 | 值 |
---|---|---|---|
0 | 4位数年 | tm_year | 如2008 |
1 | 月 | tm_mon | 1 到 12 |
2 | 日 | tm_mday | 1到31 |
3 | 小时 | tm_hour | 0到23 |
4 | 分钟 | tm_min | 0到59 |
5 | 秒 | tm_sec | 0到61 (60或61 是闰秒) |
6 | 一周的第几日 | m_wday | 0到6 (0是周一) |
7 | 一年的第几日 | tm_yday | 1到366 (儒略历) |
8 | 夏令时 | tm_isdst | 1(夏令时)、0(不是夏令时)、-1(未知),默认 -1 |
时间日期格式化符号
- %y 两位数的年份表示(00-99)
- %Y 四位数的年份表示(000-9999)
- %m 月份(01-12)
- %d 月内中的一天(0-31)
- %H 24小时制小时数(0-23)
- %I 12小时制小时数(01-12)
- %M 分钟数(00=59)
- %S 秒(00-59)
- %a 本地简化星期名称
- %A 本地完整星期名称
- %b 本地简化的月份名称
- %B 本地完整的月份名称
- %c 本地相应的日期表示和时间表示
- %j 年内的一天(001-366)
- %p 本地A.M.或P.M.的等价符
- %U 一年中的星期数(00-53)星期天为星期的开始
- %w 星期(0-6),星期天为星期的开始
- %W 一年中的星期数(00-53)星期一为星期的开始
- %x 本地相应的日期表示
- %X 本地相应的时间表示
- %Z 当前时区的名称
- %% %号本身
常用内容
时间戳与时间元组
'''
[] :表示参数可选
'''
# 生成当前时间的时间戳,浮点秒数,如果不需要小数点后面的内容,可以int(time.time())
time.time()
# 1688379497.370187
# 把时间戳转化位时间元组
time.localtime([secs])
# time.localtime(1688379497)
# time.struct_time(tm_year=2023, tm_mon=7, tm_mday=3, tm_hour=18, tm_min=18, tm_sec=17, tm_wday=0, tm_yday=184, tm_isdst=0)
# 将时间元组转成时间戳,接受时间元组并返回时间戳
time.mktime(struct_time)
# time.mktime(time.localtime())
# 1688433397.0
时间格式化显示相关
'''
Python 给定的时间显示:
time.asctime([tupletime])
time.ctime([secs])
格式化时间:
time.strftime(fmt[,tupletime])
time.strptime(str,fmt='%a %b %d %H:%M:%S %Y')
'''
# time.asctime([tupletime]) 接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串,不传时间元组,则返回当前时间
time.asctime(time.localtime()) # 'Tue Jul 4 09:16:37 2023'
time.asctime() # 'Tue Jul 4 09:23:46 2023'
# time.ctime([secs]) 作用相当于asctime(localtime(secs)),传的是时间戳;未给参数相当于asctime()
time.ctime(t1) # t1 = 1688433397.0,结果为'Tue Jul 4 09:16:37 2023'
time.ctime() # 'Tue Jul 4 09:30:20 2023'
# time.strftime(fmt[,tupletime]) 接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # '2023-07-04 09:46:27'
# time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') 根据fmt的格式把一个时间字符串解析为时间元组。
struct_time = time.strptime("20230704094627", "%Y%m%d%H%M%S")
#time.struct_time(tm_year=2023, tm_mon=7, tm_mday=4, tm_hour=9, tm_min=46, tm_sec=27, tm_wday=1, tm_yday=185, tm_isdst=-1)
其他
time.sleep(secs) # 推迟调用线程的运行,secs指秒数
应用
计算时间偏差
已知两个时间的时间字符传,计算出两个时间的偏差秒数
import time
# 时间
t1 = "20230206211041"
t2 = "20230315150719"
# 将时间t1,t2转为时间元组
struct_t1 = time.strptime(t1, "%Y%m%d%H%M%S")
struct_t2 = time.strptime(t2, "%Y%m%d%H%M%S")
# 将时间元组转化位时间戳
secs_t1 = time.mktime(struct_t1)
secs_t2 = time.mktime(struct_t2)
# 计算两个时间戳的差值即为时间偏差
abs(secs_t1-secs_t2)
# 结果为:3174998.0