一、简介
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)
python基础语法17-时间time模块
猜你喜欢
转载自blog.csdn.net/a316495442/article/details/128420336
今日推荐
周排行