天天看点

python黑客常用模块_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 importdatetime

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

####### 获取指定日期和时间

from datetime importdatetime

dt= datetime(2015, 4, 19, 12, 20) #用指定日期时间创建datetime

print(dt) #2015-04-19 12:20:00

####### 将时间转换为时间戳

from datetime importdatetime

dt= datetime(2015, 4, 19, 12, 20) #用指定日期时间创建datetime

dt.timestamp() #把datetime转换为timestamp 1429417200.0

####### 将时间戳转换为时间

from datetime importdatetime

t= 1429417200.0

print(datetime.fromtimestamp(t)) #2015-04-19 12:20:00

####### 将字符串转换为时间

from datetime importdatetime

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 importdatetime

now=datetime.now()print(now.strftime('%a, %b %d %H:%M')) #Mon, May 05 16:28

####### 时间的加减

from datetime importdatetime, 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)的结果