time模块 - - -时间获取和转换
在我们学习time模块之前需要对以下的概念进行了解:
-
时间戳:时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数.
Python中获取时间的常用方法是,先得到时间戳,再将其转换成想要的时间格式。 -
UTC(Coordinated Universal Time,世界协调时):协调世界时,又称世界统一时间、世界标准时间、国际协调时间,在我国为UTC+8。
-
元组struct_time:日期、时间是包含许多变量的,所以在Python中定义了一个元组struct_time将所有这些变量组合在一起,包括:4位数年、月、日、小时、分钟、秒等。
所有变量及要求如下:
字段 | 值 |
---|---|
tm_year(年) | 1970 |
tm_mon(月) | 1~12 |
tm_mday(日) | 1~31 |
tm_hour(时) | 0~23 |
tm_min(分) | 0~59 |
tm_sec(秒) | 0~61 (60或61 是闰秒) |
tm_wday(星期几) | 0-6(0表示星期一) |
tm_yday(一年中的第几天) | 1-366 |
tm_isdst(是否为夏令时) | 0,1,-1(-1代表夏令时) |
-
结构化时间:
time.localtime()
time.gmtime()世界标准时间(格林尼治时间)
结构化时间转成时间戳:time.mktime(time.localtime())结构化时间转成字符串时间:time.strftime(’%Y-%m-%d %X’,time.localtime())
字符串时间转成结构化时间:time.strptime(‘2017:05:07:19:47:36’,’%Y-%m-%d %X’)
time模块常用的内置函数
-
time.time()
说明:
返回当前时间的时间戳(1970元年后的浮点秒数)实例
>>>import time >>>time.time() 1554557435.836778
-
time.sleep(secs)
说明:
推迟调用程序的运行,secs的单位是秒
实例:
```
>>>import time
>>>start_time = time.time()
>>>time.sleep(5)
>>>end_time = time.time()
>>>print(start_time-end_time)
-5.000690221786499
```
-
time.gmtime([secs])
说明:
和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。实例:
>>>import time >>>a = time.time() >>> time.gmtime(a) time.struct_time(tm_year=2019, tm_mon=4, tm_mday=6, tm_hour=13, tm_min=45, tm_sec=3, tm_wday=5, tm_yday=96, tm_isdst=0)
默认调用time.time()
>>>import time >>>time.gmtime() time.struct_time(tm_year=2019, tm_mon=4, tm_mday=6, tm_hour=13, tm_min=45, tm_sec=3, tm_wday=5, tm_yday=96, tm_isdst=0) >>>time.gmtime(33) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=33, tm_wday=3, tm_yday=1, tm_isdst=0)
-
time.localtime([secs])
说明:
将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。实例:
>>>import time >>>a = time.time() >>>time.localtime(a) time.struct_time(tm_year=2019, tm_mon=4, tm_mday=6, tm_hour=22, tm_min=10, tm_sec=5, tm_wday=5, tm_yday=96, tm_isdst=0)
默认调用time.time()
>>>import time >>>time.localtime() time.struct_time(tm_year=2019, tm_mon=4, tm_mday=6, tm_hour=14, tm_min=23, tm_sec=9, tm_wday=5, tm_yday=96, tm_isdst=0) >>>time.localtime(55) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=55, tm_wday=3, tm_yday=1, tm_isdst=0)
-
time.mktime(t)
说明:
将一个struct_time转化为时间戳。
实例:>>>import time >>>a = time.localtime() >>>time.mktime(a) 1554561470.0
-
time.asctime (t)
说明:
把一个表示时间的元组或者struct_time表示为这种形式:‘Sun Jun 20 23:21:05 1993’。如果没有参数,将会将time.localtime()作为参数传入。实例:
当没有参数的时候默认将time.localtime()传入
>>>import time >>>time.asctime() 'Sat Apr 6 22:44:41 2019' >>>a = time.localtime() >>>time.asctime(a) 'Sat Apr 6 22:47:25 2019'
当传入的参数为时间元组的时候
>>>import time >>>time.asctime((2019, 4, 6, 22, 54, 19, 134860,0,0)) 'Sat Apr 6 22:54:19 2019'
-
time.ctime([secs])
说明:
把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。实例:
>>>import time >>>time.ctime() 'Sat Apr 6 23:04:14 2019' >>>time.ctime(time.time()) 'Sat Apr 6 23:05:07 2019'
-
time.struct_time()
说明:
接收一个时间元组,返回一个struct_time()的对象实例:
>>>import time >>>time.struct_time((2019, 4, 6, 32, 10, 19, 134860,0,0)) time.struct_time(tm_year=2019, tm_mon=4, tm_mday=6, tm_hour=32, tm_min=10, tm_sec=19, tm_wday=134860, tm_yday=0, tm_isdst=0)
-
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 | 时区的名字(如果是本地时间,返回空字符串) |
%% | ‘%’字符 |
实例:
通过函数将struct_time转成格式字符串
>>>import time
>>>a = time.localtime()
>>>time.strftime("%Y-%m-%d %H:%M:%S",a)
'2019-04-07 22:13:38'
如果不传入struct_time参数则默认返回当前的时间格式化字符串
>>>import time
>>>time.strftime("%Y-%m-%d")
'2019-04-07'
手动拼接显示字符串时间
>>>import time
>>>str(time.localtime().tm_year)+"年"+str(time.localtime().tm_mon)+"月"+str(time.localtime().tm_mday)+"日"
'2019年4月7日'
-
time.strptime(string[,format])
说明:- 将格式字符串转化成struct_time
- 该函数是time.strftime()函数的逆操作。time strptime() 函数根据指定的格式把一个时间字符串解析为时间元组。所以函数返回的是struct_time对象。
参数:
- string :时间字符串
- format:格式化字符串
将字符串的时间转换成strcut_time对象
>>>import time
>>>str_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
>>>time.strptime(str_time,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=7, tm_hour=22, tm_min=28, tm_sec=28, tm_wday=6, tm_yday=97, tm_isdst=-1)