python基础语法17-时间time模块

一、简介
Python程序有很多方式处理日期和时间,转换日期格式是一个常见的功能。Python提供了一个 time和calendar模块可以用于格式化日期和时间。
时间间隔是以秒为单位的浮点小数。每个时间戳都以自从 1970年 1月 1日午夜(历元)经过了多长时间来表示。
Python的 time模块下有很多函数可以转换常见日期格式。如函数 time.time() 用于获取当前时间戳。
时间的划分:UTC时间和CST时间
UTC时间,又称“世界标准时间”,每个国家的当地时间就是以这个时间作为标准,进行换算划分出来的,这个时间的存在就是为了能够统一全世界的时间。
CST时间,又叫“北京时间”、“中国标准时间”,这个就是经常所说的本地时间,人在中国,这个就是你的本地时间。根据地理知识,中国按照时区上的划分,属于东八区,比UTC时间要早8个小时,也就是说UTC+8就是中国标准时间。
python中时间的表现形式有3种:
(1)格式化字符串表示形式(format_time):比说"2022-12-23 13:55:47"。这种方式更为灵活,你任意给我一个时间,我可以用任何自定义格式将其输出。
(2)时间戳表示形式(timestamp):时间戳表示的是从1970-01-01 00:00:00至今的时间差换算成【秒数】的展示。这种时间格式很常见,很多数据库系统导出的数据会见到这种数据,因此学会这种数据的处理方法很有必要。
(3) 时间元组(struct_time):用表示时间的9个元素组成的元组。分别是年、月、日、时、分、秒、一周的第几天(星期几)、一年的第几天、tm_isdst是否是夏令时(-1表示不确定,0表示不是夏令时,1表示是夏令时)。
注意:时间元组这种时间形式中,0表示一周的第一天(星期一);1表示一周的第二天(星期二)…
示例:
import time
print('当前时间为时间戳形式:',time.time())
print('当前时间为struct_time形式:',time.localtime(time.time()))
print('当前时间为格式化字符串形式:',time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
当前时间为时间戳形式: 1671779830.9920394
当前时间为struct_time形式: time.struct_time(tm_year=2022, tm_mon=12, tm_mday=23, tm_hour=15, tm_min=17, tm_sec=10, tm_wday=4, tm_yday=357, tm_isdst=0)
当前时间为格式化字符串形式: 2022-12-23 15:17:10
二、时间元组
Python函数用一个元组装起来的9组数字处理时间:
序号           字段                       值
0      4位数年          2008
1          月              1 到 12
2          日              1到31
3         小时          0到23
4         分钟          0到59
5           秒              0到61 (60或61 是闰秒)
6          一周的第几日      0到6 (0是周一)
7          一年的第几日      1到366 (儒略历)
8          夏令时          -1, 0, 1, -1是决定是否为夏令时的标识
struct_time:为了更好地表示时间,time中封装了struct_time类,其成员包括:
序号       属性                值
0    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    tm_wday      0 到 6 (0是周一)
7    tm_yday          一年中的第几天,1 到 366
8    tm_isdst  是否为夏令时,值有:1(夏令时)、0(不是夏令时)、-1(未知),默认 -1
三、python中时间日期格式化符号:
序号  名称        含义
1     %y   两位数的年份表示(00-99)
2     %Y   四位数的年份表示(000-9999)
3     %m   月份(01-12)
4     %d   月内中的一天(0-31)
5     %H   24小时制小时数(0-23)
6     %I   12小时制小时数(01-12)
7     %M   分钟数(00=59)
8     %S   秒(00-59)
9     %a   本地简化星期名称
10     %A   本地完整星期名称
11     %b   本地简化的月份名称
12     %B   本地完整的月份名称
13     %c   本地相应的日期表示和时间表示
14     %j   年内的一天(001-366)
15     %p   本地A.M.或P.M.的等价符
16     %U   一年中的星期数(00-53)星期天为星期的开始
17     %w   星期(0-6),星期天为星期的开始
18     %W   一年中的星期数(00-53)星期一为星期的开始
19     %x   本地相应的日期表示
20     %X   本地相应的时间表示
21     %Z   当前时区的名称
22     %%   %号本身
四、time模块内置函数
序号            函数                                   描述
1     time.altzone                 返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。
2     time.asctime([tupletime])     接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串
3     time.clock()                 用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用
4     time.ctime([secs])             作用相当于asctime(localtime(secs)),未给参数相当于asctime()
5     time.gmtime([secs])         接收时间戳(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组t。注:t.tm_isdst始终为0
6     time.localtime([secs])         接收时间戳(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取0或1,取决于当地当时是不是夏令时
7     time.mktime(tupletime)         接受时间元组并返回时间戳(1970纪元后经过的浮点秒数)
8     time.sleep([secs])             推迟调用线程的运行,secs指秒数
9     time.strftime(fmt[,tupletime]) 接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定
10     time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') 根据fmt的格式把一个时间字符串解析为时间元组
11     time.time()                 返回当前时间的时间戳(1970纪元后经过的浮点秒数)
12     time.tzset()                 根据环境变量TZ重新初始化时间相关设置
13     time.perf_counter()         返回计时器的精准时间(系统的运行时间),包含整个系统的睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。
14     time.process_time()         返回当前进程执行 CPU 的时间总和,不包含睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。
time模块比较重要的两个属性:
time.timezone  属性time.timezone是当地时区(未启动夏令时)距离格林威治的偏移秒数(>0,美洲;<=0大部分欧洲,亚洲,非洲)。
time.tzname 属性time.tzname包含一对根据情况的不同而不同的字符串,分别是带夏令时的本地时区名称,和不带的。
五、time的使用
import time
t = time.time()#当前时间戳
print(t)
print(time.localtime(t))  #时间戳 → 时间元组,默认为当前时间
print(time.ctime(t))  #时间戳 → 可视化时间
print(time.mktime(time.localtime(t)))  #时间元组 → 时间戳
print(time.asctime(time.localtime(t))) #时间元组 → 可视化时间
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) #时间元组 → 可视化时间(定制)
print(time.strptime('2022-12-23 15:26:18', '%Y-%m-%d %H:%M:%S')) #可视化时间(定制) → 时间元祖
运行结果如下:
1671780440.902962
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=23, tm_hour=15, tm_min=27, tm_sec=20, tm_wday=4, tm_yday=357, tm_isdst=0)
Fri Dec 23 15:27:20 2022
1671780440.0
Fri Dec 23 15:27:20 2022
2022-12-23 15:27:20
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=23, tm_hour=15, tm_min=26, tm_sec=18, tm_wday=4, tm_yday=357, tm_isdst=-1)
 

猜你喜欢

转载自blog.csdn.net/a316495442/article/details/128420336
今日推荐