16-Python之路-time模块

本文详细介绍了Python中表示时间的三种方式(时间戳、struct_time元组和格式化时间字符串),以及常用的时间处理方法如time模块的各种函数,包括时间差计算示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 介绍

2. 表示时间的三种方式

2.1. 时间戳

时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。时间戳是一个秒数(便于计算),1970年是Unix的诞生时间。主要是便于计算时间。

import time

# 生成timestamp
time.time()

2.2. 元组

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

import time

time.localtime()

2.3. 格式化的时间字符串

格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。

time.strftime("%Y-%m-%d")

Python中时间日期格式化符号:

3. 常用方法

3.1. 返回时间戳

  • 当前时间的时间戳:time.time()
  • 时间元组→时间戳:time.mktime(<时间元组>)

>>> import time
>>> time.mktime((1972,1,1,1,1,1,0,0,0))
63046861.0

3.2. 返回时间元组(struct_time)

  • 时间戳→时间元组(当地):time.localtime(<时间戳>)
  • 时间戳→时间元组(格林威治):time.gmtime(<时间戳>)
  • 格式化时间→时间元组:time.strptime(<自定义的格式>, <%符号>)

>>> import time
>>> time.localtime(15564845527)
time.struct_time(tm_year=2463, tm_mon=3, tm_mday=26, tm_hour=0, tm_min=12, tm_sec=7, tm_wday=0, tm_yday=85, tm_isdst=0)
>>> time.gmtime(15564845527)
time.struct_time(tm_year=2463, tm_mon=3, tm_mday=25, tm_hour=16, tm_min=12, tm_sec=7, tm_wday=6, tm_yday=84, tm_isdst=0)
>>> time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X') 
time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1)

3.3. 返回格式化时间

  • 时间元组→自定义格式:time.strftime(<格式化的符号>,<时间元组>)
  • 时间元组→标准格式:time.asctime(<时间元组>)
  • 时间戳→标准格式:time.ctime(<时间戳>)

>>> import time
>>> time.strftime('%Y-%m-%d %X',(1972,1,1,1,1,1,0,0,0))
'1972-01-01 01:01:01'
>>> time.asctime((1972,1,1,1,1,1,0,0,0))
'Mon Jan  1 01:01:01 1972'
>>> time.ctime(15564845527)
'Mon Mar 26 00:12:07 2463'

相互转换关系图:

4. 时间控制

4.1. time.sleep()

推迟调用线程的运行的秒数:time.sleep(<秒数>)。

4.2. time.perf_counter()

返回计时器的精准时间(系统的运行时间),包含整个系统的睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。

4.3. time.process_time()

返回当前进程执行 CPU 的时间总和,不包含睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。

5. 案例:计算时间差

start_time = '2022-06-12 9:0:0'
end_time = '2023-07-13 10:24:0'


s1 = time.strptime(start_time,"%Y-%m-%d %H:%M:%S")
s2 = time.strptime(end_time,"%Y-%m-%d %H:%M:%S")

# print('过去了%s小时%s分钟'%(s2.tm_hour-s1.tm_hour,s2.tm_min-s1.tm_min))

tt1 = time.mktime(s1)
tt2 = time.mktime(s2)
diff_time = tt2-tt1
tt3 = time.gmtime(diff_time)

print('过去了{}年{}月{}天{}小时{}分钟{}秒'.format(tt3.tm_year-1970,tt3.tm_mon-1,tt3.tm_mday-1,tt3.tm_hour-0,tt3.tm_min-0,tt3.tm_sec-0))


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值