python常用模块——time

time模块

一、time模块基础

三个时间表示:1.时间戳;2.结构化时间;3.格式化时间;

1.时间戳

从1970年1月1日到现在的秒数;

2.结构化时间

一个时间的元组; 内容如下:time.structtime(tmyear=2018, tmmon=1, tmmday=19, tmhour=10, tmmin=39, tmsec=45, tmwday=4, tmyday=19, tmisdst=0)

依次为:
    tm_year     年份(包括世纪,如1998)
    tm_mon      月(1-12)
    tm_mday     天(1-31)
    tm_hour     小时(0-23)
    tm_min      分钟(到59)
    tm_sec      秒(到59)
    tm_wday     一周的第几天(0-6,星期一是0)
    tm_yday     一年中的第几天(一天一年,1-366)
    tm_isdst    夏令时(夏时制)标志(- 1, 0或1)

3.格式化时间

例如: 2018-01-19 10:43:36

二、 time模块方法

官方time模块介绍: https://docs.python.org/3/library/time.html

1. asctime(...)

asctime([tuple]) -> string
将 结构化时间 转化为 字符串形式;当不指定参数时,默认使用localtime;
例如:
    import time
    t_time=time.localtime()           # t_time = time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=10, tm_min=57, tm_sec=15, tm_wday=4, tm_yday=19, tm_isdst=0)
    print(time.asctime(t_time))       # 输出 Fri Jan 19 10:57:15 2018

2. clock(...)

clock() -> floating point number
记录CPU使用的时间。
例如:当执行 print(time.clock()) 时,记录CPU执行print语句的时间;

3. ctime(...)

ctime(seconds) -> string
指定参数秒数,返回一个字符串时间。
如果指定参数,则返回时间是: 零时区1970年1月1日0点0分0秒时的当前时区localtime + 指定的秒数。
如果未指定参数,则返回时间为:当前的本地时间localtime

假如现在北京时间是东八区,指定秒数30: time.ctime(30),则返回  Thu Jan  1 08:00:30 1970 ; 假如不指定秒数,则返回当前时间 local_time
例如:
    import time
    print(time.ctime(30))        # 输出 Thu Jan  1 08:00:30 1970
    print(time.ctime())          # 输出 Fri Jan 19 11:08:41 2018
    print(time.localtime())      # 输出 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=11, tm_min=08, tm_sec=41, tm_wday=4, tm_yday=19, tm_isdst=0)

4. get_clock_info(...)

get_clock_info(name: str) -> dict
暂时跳过;以后补充;

5. gmtime(...)

gmtime([seconds]) -> (tm_year, tm_mon, tm_mday, tm_hour, tm_min,tm_sec, tm_wday, tm_yday, tm_isdst)
指定参数秒数,返回的格式是结构化时间;
如果指定参数,则返回的时间为:1970年1月1日0点0分 + 指定的秒数;
如果未指定参数,则返回 当前UTC(零时区的)时间。即东八区北京时间减去8小时的时间。

例如:
import time
print(time.gtime(30))        # 输出 time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1, tm_isdst=0)
print(time.gtime())          # 输出 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=3, tm_min=22, tm_sec=13, tm_wday=4, tm_yday=19, tm_isdst=0)
print(time.localtime())      # 输出本地时间 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=11, tm_min=22, tm_sec=13, tm_wday=4, tm_yday=19, tm_isdst=0)

6. localtime(...)

localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min,
                          tm_sec,tm_wday,tm_yday,tm_isdst)
指定参数,返回结构化时间;
如果指定了参数,则返回时间为:零时区1970年1月1日0点0分时,当前时区(如东八区)的localtime + 指定的秒数
如果未指定参数,则返回时间为:当前的本地时间localtime

例如:
import time
print(time.localtime(30))    # time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1, tm_isdst=0)
print(time.localtime())      # time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=11, tm_min=45, tm_sec=26, tm_wday=4, tm_yday=19, tm_isdst=0)
print(time.ctime())          # Fri Jan 19 11:45:26 2018

7. mktime(...)

mktime(tuple) -> floating point number
将结构化时间转换为时间戳;

例如:
import time
t_time=time.localtime()
print(t_time)                # time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=11, tm_min=52, tm_sec=21, tm_wday=4, tm_yday=19, tm_isdst=0)
print(time.mktime(t_time))   # 1516333941

8. monotonic(...)

monotonic() -> float
不能倒退的单调时钟;以后补充

9. perf_counter(...)

perf_counter() -> float
计数器;以后补充

10. process_time(...)

process_time() -> float
用于分析的过程时间:内核和用户空间CPU时间之和。

11. sleep(...)

sleep(seconds)
睡眠指定的秒数;必须指定,可以为浮点数;

12. strftime(...)

strftime(format[, tuple]) -> string
根据指定的时间格式将时间元组转换成字符串。如果不指定时间元组,则默认使用localtime。

例如:
import time
t_time=time.localtime()    # t_time = time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=13, tm_min=2, tm_sec=3, tm_wday=4, tm_yday=19, tm_isdst=0)
time.sleep(5)
print(time.strftime('%Y-%m-%d %H:%M:%S',t_time))   #输出 2018-01-19 13:02:03

常用格式码:
    %Y  以十进制数字表示的年 例如2018.
    %m  十进制表示的月 [01,12].
    %d  十进制表示的天 [01,31].
    %H  十进制表示的小时 [00,23].
    %M  十进制表示的分钟 [00,59].
    %S  十进制表示的秒  [00,61].
    %z  相对UTC的偏移量;如果东区为+,西区为-;例如东八区 +0800.
    %a  本地时区当前的工作日缩写,即星期;例如:星期五 Fri.
    %A  本地时区当前的工作日全写,即星期;例如:星期五 Friday.
    %b  本地时区当前的月份缩写,即月份;例如:一月 Jan.
    %B  本地时区当前的月份全写,即月份;例如:一月 January.
    %c  本地的当前时间,字符串格式;例如: Fri Jan 19 13:17:50 2018.
    %I  以十进制数字表示小时,12小时制 [01,12].
    %p  上午或下午,例如 AM or PM.

    %j  一年中的第几天,十进制数[001,366]。
    %U  一年中的第几周,十进制数[00,53]。星期日作为一周的第一天;在一年的第一个星期日前的几天,都认为在第0周;
    %w  一周中的第几天,十进制数[0,6];星期日为0
    %W  一年中的第几周,十进制数[00,53]。星期一作为一周的第一天;在一年的第一个星期一前的几天,都认为在第0周;
    %x  本地时间的年月日的适当表示形式,字符串格式;例如:01/19/18   2018年1月19日。
    %X  本地时间的时间适当表示形式,字符串格式;例如:13:54:42
    %y  两位数字表示年份,没有世纪号;十进制数;[00,99]
    %Z  时区名称(如果没有时区,则没有字符)。
    %%  %字符

13. strptime(...)

strptime(string, format) -> struct_time

根据指定的格式和字符串时间,把时间转换为结构化时间(元组形式);两个参数必须指定;

例如:
import time
str_time="2018-01-19 13:02:03"
print(time.strptime(str_time,'%Y-%m-%d %H:%M:%S'))   # 输出 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=13, tm_min=23, tm_sec=9, tm_wday=4, tm_yday=19, tm_isdst=-1)

常用格式码:和上面一样。

14. time(...)

time() -> floating point number
从纪元开始以秒为单位返回当前时间;即时间戳;如果系统支持,则可能返回浮点数,即更精确;

三、补充一点datetime模块

import datetime
now_time=datetime.datetime.now()
print(now_time)               # 输出 2018-01-19 15:21:28.702212   

平时我们也可以用这个取时间。

datetime

####### 获取当前的日期和时间
from datetime import datetime

now_time=datetime.now()
print(now_time)                        # 2015-05-18 16:28:07.198690


####### 获取指定日期和时间
from datetime import datetime
dt = datetime(2015, 4, 19, 12, 20)     # 用指定日期时间创建datetime
print(dt)                            # 2015-04-19 12:20:00


####### 将时间转换为时间戳
from datetime import datetime
dt = datetime(2015, 4, 19, 12, 20)     # 用指定日期时间创建datetime
dt.timestamp()                         # 把datetime转换为timestamp   1429417200.0


####### 将时间戳转换为时间
from datetime import datetime
t = 1429417200.0
print(datetime.fromtimestamp(t))    # 2015-04-19 12:20:00


####### 将字符串转换为时间
from datetime import datetime
cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
print(cday)                        # 2015-06-01 18:19:59


####### 将时间转换为字符串
from datetime import datetime
now = datetime.now()
print(now.strftime('%a, %b %d %H:%M'))    # Mon, May 05 16:28


####### 时间的加减
from datetime import datetime, timedelta
now = datetime.now()
print(now)                            # 10小时后的日期。输出 datetime.datetime(2015, 5, 18, 16, 57, 3, 540997)的结果
now + timedelta(hours=10)             # 输出 datetime.datetime(2015, 5, 19, 2, 57, 3, 540997)的结果
now - timedelta(days=1)               # 1day前的时间。输出 datetime.datetime(2015, 5, 17, 16, 57, 3, 540997)的结果
now + timedelta(days=2, hours=12)     # 2天12小时后的日期。输出 datetime.datetime(2015, 5, 21, 4, 57, 3, 540997)的结果

 

posted @ 2018-12-10 09:16  hacker&haidao  阅读(258)  评论(0编辑  收藏  举报