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)的结果