赞
踩
这是Python 科学计算库的第一篇 — time 模块,即关于时间的模块,本篇主要介绍time 模块的一些常用方法。
1、首先导入time模块:import time
2、可以使用dir 命令查看time模块下的方法:dir(time)
Python中的时间主要有3种表示方式:时间戳;时间元组;格式化的时间字符串。
1、时间戳(timestamp) :时间戳是指格林威治时间1970年01月01日00时00分00秒 (北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数,是一个float 型数值。返回时间戳的方法有:time()
,clock()
。
名词解释:
– UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。
– DST(Daylight Saving Time)即夏令时。是一种为节约能源而人为规定地方时间的制度,一般在天亮早的夏季人为将时间提前一小时。
2、时间元组(struct_time):时间元组有9个整型数值,分别表示时间的9个不同含义。返回时间元组的方法有:gmtime()
,localtime()
,strptime()
。
示例:
t = time.localtime()
print(t)
返回结果:
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=25, tm_hour=19, tm_min=55, tm_sec=2, tm_wday=6, tm_yday=329, tm_isdst=0)
索引 | 属性 | 含义 | 值 |
---|---|---|---|
0 | tm_year | 年 | 如2018,1992等 |
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 |
6 | tm_wday | 星期 | 0 - 6(0表示周日) |
7 | tm_yday | 一年中的第几天 | 0 - 366 |
8 | tm_isdst | 是否夏令时 | 0:表示正常格式,1:表示为夏令时格式,-1:表示根据当前的日期时间格式来判定(默认为-1) |
注意:tm_sec (秒) 的取值范围是0 - 61,而不是59,闰年秒占两秒!
3、格式化的时间字符串:可以自己设定显示格式,常用的有两种:
(1)英文格式字符串:Sun Jun 20 23:21:05 1993
(2)中文格式:2018-05-05 16:37:06
时间格式:
格式 | 含义 |
---|---|
%a | 本地(locale)简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化月份名称 |
%B | 本地完整月份名称 |
%c | 本地相应的日期和时间表示 |
%d | 一个月中的第几天(01 - 31) |
%H | 一天中的第几个小时(24小时制,00 - 23) |
%I | 一天中的第几个小时(12小时制,01 - 12) |
%j | 一年中的第几天(001 - 366) |
%m | 月份(01 - 12) |
%M | 分钟数(00 - 59) |
%p | 本地am或者pm的相应符号 |
%S | 秒(01 - 61) |
%U | 一年中的星期数,(00 - 53,星期天是一个星期的开始)第一个星期天之前的所有天数都放在第0周。 |
%w | 一个星期中的第几天(0 - 6,0 表示星期天) |
%W | 和%U 基本相同,不同的是%W 以星期一为一个星期的开始。 |
%x | 本地相应日期 |
%X | 本地相应时间 |
%y | 去掉世纪的年份(00 - 99) |
%Y | 完整的年份 |
%Z | 时区的名字(如果不存在为空字符) |
%% | ‘%’字符 |
以上最常用的有6个:年-月-日 时:分:秒
注意:%l 一定要与 %p 配合使用才有意义,表示一天中上午或下午的第几个小时。
time 模块常用方法总表
方法/属性 | 含义 |
---|---|
time.altzone | 返回当地夏令时时间与标准UTC时间的偏移秒数。若当地位于格林威治西部,返回值为正;若位于格林威治东部(如西欧),返回值为负。 |
time.asctime([tupletime]) | 接收时间元组,返回一个可读形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。 |
time.clock() | 在UNIX系统上,返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。在WINDOWS中,第一次调用,返回的是进程运行的实际时间,第二次之后的调用是自第一次调用以后到现在的运行时间。 |
time.ctime([secs]) | 作用相当于asctime(localtime(secs));未给参数相当于asctime(),返回当地当前时间的英文格式时间字符串。 |
time.gmtime([secs]) | 接收时间辍,返回格林威治天文时间下的时间元组t;不传递参数时,返回当前时间的时间元组。 |
time.localtime([secs]) | 接收时间戳,返回当地时间下的时间元组t。 |
time.mktime(tupletime) | 接收时间元组,返回时间戳。 |
time.sleep(secs) | 推迟调用线程的运行,暂停几秒钟。 |
time.strftime(fmt, [tupletime]) | 接收时间元组,返回指定格式字符串表示的当地时间,格式fmt 决定。 |
time.strptime(str, fmt=fmt_str) | 根据fmt 的格式把一个时间字符串解析为时间元组, str需要和fmt一一对应,如 strptime(‘20 3’,“%d %m”) %d表示一个月第几天, %m表示一年的第几个月 |
time.time() | 返回当前时间的时间戳 |
time.time() :返回当前时间的时间戳
time.mktime(tupletime) :接收时间元组,返回时间戳
time.localtime([secs]) :接收时间戳,返回当地时间下的时间元组
time.gmtime([secs]) :接收时间戳,返回格林威治天文时间下的时间元组
import time
timestamp = time.time() # 当前时间的时间戳
print("当前时间戳是:", timestamp)
localtuple = time.localtime()
print("当前时间对应的当地时间下的时间元组是:", localtuple)
gmtuple = time.gmtime()
print("当前时间对应的格林威治天文时间下的时间元组是:", gmtuple)
stamp = time.mktime(localtuple) # 返回localtuple 对应的时间戳
print("时间元组localtuple对应的时间戳是:", stamp)
输出结果:
当前时间戳是: 1543152765.2109637
当前时间对应的当地时间下的时间元组是: time.struct_time(tm_year=2018, tm_mon=11, tm_mday=25, tm_hour=21, tm_min=32, tm_sec=45, tm_wday=6, tm_yday=329, tm_isdst=0)
当前时间对应的格林威治天文时间下的时间元组是: time.struct_time(tm_year=2018, tm_mon=11, tm_mday=25, tm_hour=13, tm_min=32, tm_sec=45, tm_wday=6, tm_yday=329, tm_isdst=0)
时间元组localtuple对应的时间戳是: 1543152765.0
time.strftime(fmt, [tupletime]) :接收时间元组,返回指定格式的时间字符串,格式由fmt 指定。
time.strptime(str, fmt=fmt_str) :根据fmt的格式把一个时间字符串解析为时间元组,str需要和fmt一一对应。
import time
t = time.localtime()
time_str = time.strftime("%Y-%m-%d %H:%M:%S", t)
print("当前时间元组对应的指定格式时间字符串:", time_str)
str = "2018/10/12 12:30:45"
time_tuple = time.strptime(str, "%Y/%m/%d %H:%M:%S")
print("字符串str 对应的时间元组为:\n", time_tuple)
输出结果:
当前时间元组对应的指定格式时间字符串: 2018-11-25 21:53:21
字符串str 对应的时间元组为:
time.struct_time(tm_year=2018, tm_mon=10, tm_mday=12, tm_hour=12, tm_min=30, tm_sec=45, tm_wday=4, tm_yday=285, tm_isdst=-1)
time.sleep(secs) :线程推迟指定的时间运行,secs 单位为秒
time.clock() :在UNIX系统上,返回的是“进程时间”,它是用秒表示的浮点数(时间戳);而在Windows系统中,第一次调用,返回的是进程运行的实际时间,而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32上QueryPerformanceCounter()为基础,它比毫秒表示更为精确)
import time
print("第一次调用:", time.clock())
time.sleep(2) # 进程暂停2s
t2 = time.clock()
print("第二次调用:", t2)
time.sleep(3)
t3 = time.clock()
print("第三次调用:", t3)
输出结果:
第一次调用: 5.688884034374513e-07
第二次调用: 2.0010387902246767
第三次调用: 5.001470576522886
time.asctime([tupletime]) :接收时间元组,返回英文格式的时间字符串;不给定参数时,返回当前时间的英文格式时间字符串。
time.ctime([secs]) :接收时间戳,返回英文格式的时间字符串;不给定参数时,返回当前时间的英文格式时间字符串。
注:不接收参数时,asctime() 与 ctime() 相同。
import time
stamp = time.time() # 返回当前时间的时间戳
t = time.localtime(stamp)
print("asctime()返回指定时间:", time.asctime(t))
print("ctime()返回指定时间:", time.ctime(stamp))
time.sleep(5)
print("asctime()返回当前时间:", time.asctime())
print("ctime()返回当前时间:", time.ctime())
输出结果:
asctime()返回指定时间: Sun Nov 25 22:16:17 2018
ctime()返回指定时间: Sun Nov 25 22:16:17 2018
asctime()返回当前时间: Sun Nov 25 22:16:22 2018
ctime()返回当前时间: Sun Nov 25 22:16:22 2018
time.altzone :当地夏令时时间与标准UTC时间的偏移秒数
time.timezone :当地时间与与标准UTC时间的偏移秒数
time.daylight :当地时间是否反映夏令时,默认为0
import time
print(time.altzone)
print(time.timezone)
输出结果:
-32400
-28800
以上是time 模块常用方法及其属性的介绍,若要了解更多,请参考time 模块的官方文档。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。