一.在Python中,与时间处理相关的模块有:time、datetime以及calendar。
注意一下几点:
- 在Python中,通常有这几种方式表示时间:时间戳、格式化的时间字符串、元组(struct_time 共九种元素)。由于Python的time模块主要是调用C库实现的,所以在不同的平台可能会有所不同。
- 时间戳(timestamp)的方式:时间戳表示是从1970年1月1号 00:00:00开始到现在按秒计算的偏移量。查看一下type(time.time())的返回值类型,可以看出是float类型。返回时间戳的函数主要有time()、clock()等。
- UTC(世界协调时),就是格林威治天文时间,也是世界标准时间。在中国为UTC+8。DST夏令时。
- 元组方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。
>>> import time >>> gettime = time.localtime() >>> gettime time.struct_time(tm_year=2020, tm_mon=11, tm_mday=23, tm_hour=15, tm_min=31, tm_sec=19, tm_wday=0, tm_yday=328, tm_isdst=0)
直接使用元组索引获取对应项的值:
>>> gettime[0] 2020 >>> gettime[1] 11 >>> gettime[2] 23 >>> gettime[3] 15
或者是使用成员符号调用:
>>> gettime.tm_year
2020
下面元组中各元素的解释:
tm_year :年 tm_mon :月(1-12) tm_mday :日(1-31) tm_hour :时(0-23) tm_min :分(0-59) tm_sec :秒(0-59) tm_wday :星期几(0-6,0表示周日) tm_yday :一年中的第几天(1-366) tm_isdst :是否是夏令时(默认为-1)
二.time模块中常用的函数
使用该模块中的函数时,必须先引入该模块:
import time
1、time.time():返回当前时间的时间戳
>>> import time >>> #返回时间戳 >>> time.time() 1606117428.5230975 #返回时间戳,只保留整数部分 >>> int(time.time()) 1606117450 >>>
2、time.localtime( [secs] )
将一个时间戳转换为当前时区的struct_time,即时间数组格式的时间
参数:
- sec – 转换为time.struct_time类型的对象的秒数
如果secs参数未提供,则以当前时间为准(即会默认调用time.time())。
未给定参数
>>> import time >>> >>> time.localtime() time.struct_time(tm_year=2020, tm_mon=11, tm_mday=23, tm_hour=15, tm_min=46, tm_sec=39, tm_wday=0, tm_yday=328, tm_isdst=0) >>>
给定参数
>>> import time >>>
#给定了时间戳1606117650.7438078 >>> time.localtime(1606117650.7438078) time.struct_time(tm_year=2020, tm_mon=11, tm_mday=23, tm_hour=15, tm_min=47, tm_sec=30, tm_wday=0, tm_yday=328, tm_isdst=0)
3、time.gmtime([secs])
将一个时间戳转换为UTC时区的struct_time
time.gmtime() 函数将一个时间戳转换为UTC时区(0时区)的struct_time,可选的参数sec表示从1970-1-1 00:00:00以来的秒数。其默认值为time.time(),函数返回time.struct_time类型的对象。(struct_time是在time模块中定义的表示时间的对象)。
如果secs参数未提供,则以当前时间为准。
参数:
- sec – 转换为time.struct_time类型的对象的秒数
>>>import time >>> time.gmtime() time.struct_time(tm_year=2020, tm_mon=11, tm_mday=23, tm_hour=7, tm_min=58, tm_sec=38, tm_wday=0, tm_yday=328, tm_isdst=0) >>> >>> time.gmtime(1606117650.7438078) time.struct_time(tm_year=2020, tm_mon=11, tm_mday=23, tm_hour=7, tm_min=47, tm_sec=30, tm_wday=0, tm_yday=328, tm_isdst=0) >>>
4、time.mktime(t):
将一个struct_time转化为时间戳
time.mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数表示时间的浮点数。
如果输入的值不是一个合法的时间,将触发 OverflowError 或 ValueError。
参数:
- t – 结构化的时间或者完整的9位元组元素
>>> import time >>> time.mktime(time.localtime()) 1606118673.0
5、time.sleep(secs):线程推迟指定的时间运行
线程睡眠指定时间,单位为妙。
睡眠10秒
>>> time.sleep(10)
6、time.asctime( [t] )
把一个表示时间的元组或者struct_time表示为 ‘Sun Aug 23 14:31:59 2015’ 这种形式。如果没有给参数,会将time.localtime()作为参数传入。
参数:
- t – 9个元素的元组或者通过函数 gmtime() 或 localtime() 返回的时间值
>>> import time >>> time.mktime(time.localtime()) 1606118673.0 >>> >>> time.asctime(time.gmtime()) 'Mon Nov 23 08:12:16 2020'
7、time.ctime([secs])
把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果为指定参数,将会默认使用time.time()作为参数。它的作用相当于time.asctime(time.localtime(secs))
参数:
- sec – 要转换为字符串时间的秒数
>>>import time >>> time.ctime(1606117650.7438078) 'Mon Nov 23 15:47:30 2020' >>> time.ctime() 'Mon Nov 23 16:14:11 2020'
8、time.strftime( format [, t] )
返回字符串表示的当地时间。
把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串,格式由参数format决定。如果未指定,将传入time.localtime()。如果元组中任何一个元素越界,就会抛出ValueError的异常。函数返回的是一个可读表示的本地时间的字符串。
参数:
- format:格式化字符串
- t :可选的参数是一个struct_time对象
时间字符串支持的格式符号:(区分大小写)
%a 本地星期名称的简写(如星期四为Thu) %A 本地星期名称的全称(如星期四为Thursday) %b 本地月份名称的简写(如八月份为agu) %B 本地月份名称的全称(如八月份为august) %c 本地相应的日期和时间的字符串表示(如:15/08/27 10:20:06) %d 一个月中的第几天(01 - 31) %f 微妙(范围0.999999) %H 一天中的第几个小时(24小时制,00 - 23) %I 第几个小时(12小时制,0 - 11) %j 一年中的第几天(001 - 366) %m 月份(01 - 12) %M 分钟数(00 - 59) %p 本地am或者pm的相应符 %S 秒(00 - 61) %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之 前的所有天数都放在第0周。 %w 一个星期中的第几天(0 - 6,0是星期天) %W 和%U基本相同,不同的是%W以星期一为一个星期的开始。 %x 本地相应日期字符串(如15/08/01) %X 本地相应时间字符串(如08:08:10) %y 去掉世纪的年份(00 - 99)两个数字表示的年份 %Y 完整的年份(4个数字表示年份) %z 与UTC时间的间隔(如果是本地时间,返回空字符串) %Z 时区的名字(如果是本地时间,返回空字符串) %% ‘%’字符
实例:
将当前时间的时间戳转换成想要的时间格式字符串
import time #获取时间time.localtime(),转换为2020-11-23 16:31:48 gettime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) print(gettime)
获取当前时间的时分秒
import time #获取当前时分秒 gettime = time.strftime("%H:%M:%S", time.localtime()) print(gettime)
获取当前时间的年月日
import time #获取当前 年月日 gettime = time.strftime("%y-%m-%d", time.localtime()) print(gettime)
格式符号实例:
获取当前时间的格式化时间
import datetime #获得当前时间,格式如:2020-11-23 16:48:34.489362 gettime = datetime.datetime.now() #获取当前时间的格式化时间 格式如:2020-11-23 16:50:54 014342 #formattime = gettime.strftime('%Y-%m-%d %H:%M:%S %f') #获取当前时间的格式化时间 格式如:20-11-23 04:51:40 PM formattime = gettime.strftime('%y-%m-%d %I:%M:%S %p') print(formattime)