Python科学计算库 — Time模块

Python科学计算库 — Time模块

这是Python 科学计算库的第一篇 — time 模块,即关于时间的模块,本篇主要介绍time 模块的一些常用方法。
1、首先导入time模块:import time
2、可以使用dir 命令查看time模块下的方法:dir(time)

一、Python中时间的表示方式

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 配合使用才有意义,表示一天中上午或下午的第几个小时。

3种时间表示方式的相互转换:

Python科学计算库 — Time模块_第1张图片

二、time模块常用方法

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() 返回当前时间的时间戳
  1. time.time() :返回当前时间的时间戳

  2. time.mktime(tupletime) :接收时间元组,返回时间戳

  3. time.localtime([secs]) :接收时间戳,返回当地时间下的时间元组

  4. 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

  5. time.strftime(fmt, [tupletime]) :接收时间元组,返回指定格式的时间字符串,格式由fmt 指定。

  6. 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)

  7. time.sleep(secs) :线程推迟指定的时间运行,secs 单位为秒

  8. 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

  9. time.asctime([tupletime]) :接收时间元组,返回英文格式的时间字符串;不给定参数时,返回当前时间的英文格式时间字符串。

  10. 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 模块的属性

  1. time.altzone :当地夏令时时间与标准UTC时间的偏移秒数

  2. time.timezone :当地时间与与标准UTC时间的偏移秒数

  3. time.daylight :当地时间是否反映夏令时,默认为0

    import time
    print(time.altzone)
    print(time.timezone)
    

    输出结果:
    -32400
    -28800

以上是time 模块常用方法及其属性的介绍,若要了解更多,请参考time 模块的官方文档。

你可能感兴趣的:(Python,人工智能)