time模块
import time
模块time包含用于获取当前时间、操作时间和日期、从字符串中读取日期、将日期格式化为字符串的函数。日期可表示为实数(从“新纪元”1月1日0时起过去的秒数。“新纪元”是一个随平台而异的年份,在UNIX中为1970年),也可表示为包含9个整数的元组。下表解释了这些整数。例如,元组(2008, 1, 21, 12, 2, 56, 0, 21, 0)表示2008年1月21日12时2分56秒。这一天是星期一,2008年的第21天(不考虑夏令时)。
模块time中一些重要的函数
函 数 描 述
asctime([tuple]) 将时间元组转换为字符串
localtime([secs]) 将秒数转换为表示当地时间的日期元组
mktime(tuple) 将时间元组转换为当地时间
sleep(secs) 休眠(什么都不做)secs秒
strptime(string[, format]) 将字符串转换为时间元组
time() 当前时间(从新纪元开始后的秒数,以UTC为准)
1.时间戳
时间戳是一种用于表示时间的方式。从1970年1月1日0时0分0秒0毫秒开始到指定时间的秒数。世间戳也叫做unix时间戳,1970年1月1日成为unix元年。 作用:是为了方便时间的统一运算。 1.从1970年1月1日开始计算。 2.能够使用到2038年的某一天 3.如果使用太远的未来或者1970年以前的时间可能出现异常
2.UTC时间
UTC时间又称之为世界协调时间。特指格林尼治天文台所在位置的时间也叫做格林尼治时间。 中国的时区是东八区,和世界协调时间差了8个小时,多个八个小时
3.夏令时
夏令时就是通过在夏季将时间调快一小时,来提醒大家早睡早起身体好,节省蜡烛! 每天的时钟变成了25个小时,注意本质还是24个小时
4.时间元组struct_time
时间元组就是一个用于表示时间格式的元组数据而已,他是time模块操作时间的主要方式。
(tm_year=2017, tm_mon=7, tm_mday=4, tm_hour=9, tm_min=4, tm_sec=21, tm_wday=1, tm_yday=185, tm_isdst=0)
格式:(年,月,日,时,分,秒,周几,一年中的第几天,是否是夏令时)
Python日期元组中的字段
索 引 字 段 值
0 年 如2000、2001等
1 月 范围1~12
2 日 范围1~31
3 时 范围0~23
4 分 范围0~59
5 秒 范围0~61
6 星期 范围0~6,其中0表示星期一
7 儒略日 范围1~366
8 夏令时 0、1或-1
秒的取值范围为0~61,这考虑到了闰一秒和闰两秒的情况。夏令时数字是一个布尔值(True或False),但如果你使用-1,那么mktime[将时间元组转换为时间戳(从新纪元开始后的秒数)的函数]可能得到正确的值。下列表描述了模块time中一些最重要的函数。
2)时间模块的值
1.timezone
获取当前时区与格林尼治所在时区的相差的秒数(推荐)
2.altzone
获取当前时区与格林尼治所在时区的相差的秒数,在有夏令时的情况下
3.daylight
检测是否是夏令时的状态 0 夏令时 非0就不是
3)时间模块的函数
- 1.asctime()
功能:返回一个正常的可读的时间字符串
格式:time.asctime(时间元组)
返回值:时间字符串
a = time.asctime(a)
接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。
- 2.localtime()
功能:获取当前时间元组
格式1:time.localtime()
返回值:本地时间元组
格式2:time.localtime(时间戳)
返回值:指定时间戳的本地时间元组
接收时间戳(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取0或1,取决于当地当时是不是夏令时)。
a = time.localtime() #输出时间元组struct_time
- 3.gmtime()
功能:获取当前UTC时间元组
格式1:time.gmtime()
返回值:当前UTC时间元组
格式2:time.gmtime(时间戳)
返回值:指定时间戳的UTC时间元组
- 4.ctime()
功能:获取本地时间的字符串格式
格式1: time.ctime()
返回值:时间格式字符串 相当于 asctime(localtime())
格式2: time.ctime(时间戳)
返回值:时间格式字符串 相当于asctime(localtime(时间戳))
b = time.ctime() #输出 Tue Feb 17 10:00:18 2013
- 5.mktime()
功能:使用时间元组制作时间戳
格式:time.mktime(时间元组)
返回值:时间戳
注意:按照本地时间来进行计算,如果想按照UTC时间计算,则是calendar.timegm()
import time
t = (2009, 2, 17, 17, 3, 38, 1, 48, 0)
secs = time.mktime( t )
time.mktime(t) #输出 1234915418.000000
- 6.clock()
功能:获取CPU时间,用于计算代码执行时间
格式:time.clock()
返回值:浮点数时间戳
import time
def procedure():
time.sleep(2.5)
t0 = time.clock() # measure process time
procedure()
print time.clock() - t0, "seconds process time"
0.0 seconds process time
- 7.perf_counter()
功能:获取CPU时间用于计算时间差
格式:time.perf_counter()
返回值:浮点数时间戳
主要用于计算程序执行时间,开始获取一次,程序执行完毕在获取一次,相减获得执行总时间,仅py3.3以上
- 8.sleep()
功能:程序睡眠,使得程序在此处等待指定的时间
格式:time.sleep(时间秒数)
返回值:无
sleep让程序停留一段时间,一般用在循环里面,如果每一次循环需要cpu执行大量的操作的话那么对cpu的压力是非常大的,为了减少cpu的压力,可以让cpu休息个一段时间,就可以用sleep
for i in range(10):
time.sleep(1)
print(i)
- 9.time()
功能:获取当前本地的时间戳
格式:time.time()
返回值:浮点数时间戳
time用于计算一个代码块的执行时间
start_time = time.time()
for i in range(10000):
print(i)
end_time = time.time()
print(end_time-start_time)
- 10.strftime()
功能:格式化输出时间字符串(str foramt time)
格式:time.strftime('字符串格式'[,时间元组])
返回值:格式化之后的哦字符串
格式 含义 备注
%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 本地相应时间
%y 去掉世纪的年份(00 - 99)
%Y 完整的年份
%z 用 +HHMM 或 -HHMM 表示距离格林威治的时区偏移(H 代表十进制的小时数,M 代表十进制的分钟数)
%% %号本身
a = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
例:打印前一天的时间格式 2018-11-14 11:28:50
a = time.time()-24*60*60
a = time.localtime(a)
a = time.strftime('%Y-%m-%d %H:%M:%S',a)
- 11.strptime()
功能:解析时间字符串成一个元组,strftime的逆向操作(str parse time)
格式:time.strptime('时间字符串','时间字符串格式')
返回值:时间元组
a = time.strptime(time.localtime(), '%Y-%m-%d %H:%M:%S')