python中time模块

在 Python 中,与时间处理最相关的模块是 time 和 datetime。今天我们介绍下 time 模块的常用功能。

time 模块包含一些函数用于获取时钟时间和处理器的运行时间,还提供了基本解析和字符串格式化工具。它是由底层 C 库提供与时间相关的函数,因此在不同的平台上会有细微的差别。

time.time(): 返回一个时间戳
time.asctime([t]): 转换gmtime()和localtime()返回的元组或struct_time为string.
time.clock(): 在第一次调用的时候, 返回程序运行的时间. 第二次之后返回与之前的间隔.
time.ctime([secs]): 将时间戳转换为时间字符串, 如没有提供则返回当前的时间字符串,并与asctime(localtime())一样.
time.gmtime([secs]): 将时间戳转化为, UTC 时区的struct_time.
time.localtime([secs]): 类似gmtime()但会把他转换成本地时区.
time.mktime(t): struct_time 转化为时间戳.
time.sleep(secs): 线程推迟指定时间, 以秒为单位.
time.strftime(format[,t]): 根据参数转换一个sturc_time或元组为字符串.
time.strptime(string[, format]): 与strftime相反,返回一个struct_time.

使用 time 模块前需要先引入模块

import time

这里简单说下time.struct_time。time.struct_time包含如下属性:
下标/索引 属性名称 描述
0 tm_year 年份,如 2017
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 一年中的第几天,取值范围为[1, 366]
8 tm_isdst 是否为夏令时,可取值为:0 , 1 或 -1

属性值的获取方式有两种:

  1. 可以把它当做一种特殊的有序不可变序列通过 下标/索引 获取各个元素的值,如t[0]
  2. 也可以通过 .属性名 的方式来获取各个元素的值,如t.tm_year。

一、
time.localtime([seconds])

返回本地时间,类型为时间元组 time.struct_time。默认为当前时间,也可以接受时间戳参数
所谓时间戳,是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

local = time.localtime()
print(local)
print(time.localtime(1400000000))

输出

time.struct_time(tm_year=2016, tm_mon=10, tm_mday=8, tm_hour=16, tm_min=34, tm_sec=1, tm_wday=5, tm_yday=282, tm_isdst=0)

time.struct_time(tm_year=2014, tm_mon=5, tm_mday=14, tm_hour=0, tm_min=53, tm_sec=20, tm_wday=2, tm_yday=134, tm_isdst=0)

二、
time.gmtime([secs])

与 localtime 类似,但返回的是格林威治天文时间下的时间元组,也就是0时区的时间。

print(time.gmtime())
print(time.gmtime(1400000000))

输出

time.struct_time(tm_year=2016, tm_mon=10, tm_mday=8, tm_hour=8, tm_min=49, tm_sec=31, tm_wday=5, tm_yday=282, tm_isdst=0)

time.struct_time(tm_year=2014, tm_mon=5, tm_mday=13, tm_hour=16, tm_min=53, tm_sec=20, tm_wday=1, tm_yday=133, tm_isdst=0)

三、
time.asctime([tupletime])

接受时间元组并返回一个可读的形式为Weekday Month Day HH:MM:SS Year的字符。

在之前代码的基础上

asc = time.asctime(local)
print(asc)

输出

Sat Oct 8 16:34:01 2016

四、
time.mktime(tupletime)

接受时间元组并返回时间辍。

time.mktime(local)

输出

1475915641.0

五、
time.ctime()

返回当前时间,相当于 time.asctime(time.localtime())。

print(time.ctime())

输出

Sat Oct 8 16:37:37 2016

六、
time.sleep(second)

设定当前线程的休眠时间,走完设定时间后再次启动当前线程。

这个方法常被用来控制程序的延时运行。比如在抓取网页的过程中,增加 sleep 休眠,控制抓取请求的频率不要过高,防止被对方服务器拒绝。

print(time.ctime())
time.sleep(5)
print(time.ctime())

输出

Sat Oct 8 16:45:07 2016

Sat Oct 8 16:45:12 2016

七、
time.time()

返回当前时间的时间戳。

print(time.time())

输出

1475917025.59118

在实际应用中,这个函数也经常被用于查看一个代码片的执行时间。在精度要求不是很高的情况下,可以利用执行代码前后的time.time()之差进行计算。

start = time.time()
c = 0
for i in range(1000000):
c += i
end = time.time()
print(end-start)

输出

0.151529073715

也可以将代码片放入计算时间的装饰器中进行运行。

def timer(func):
start = time.time()
func()
end = time.time()
print(end-start)
return func

@timer
def fn():
c = 0
for i in range(1000000):
c += i

fn()

八、
time.clock()

以浮点数计算的秒数返回当前的 CPU 时间。

在不同的系统上含义不同。在UNIX系统上,它返回的是"进程时间",它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间,而第二次之后的调用是自第一次调用以后到现在的运行时间。

start_time = time.clock()
print(start_time)
time.sleep(3)
print(time.clock())

输出

5.701806902607436e-07

3.0820826419892464

九、
time.strftime(fmt[,tupletime])

接收以时间元组,并返回字符串。

my_format = “%Y/%m/%d %H:%M:%S”
my_time = time.localtime()
print(my_time)
print(time.strftime(my_format, my_time))

输出

time.struct_time(tm_year=2016, tm_mon=10, tm_mday=8, tm_hour=17, tm_min=8, tm_sec=7, tm_wday=5, tm_yday=282, tm_isdst=0)

2016/10/08 17:08:07

输出参数中,格式化字符串的含义:

格式化字符串 日期/时间单元 范围
%Y 年 1900-…
%m 月 12-Jan
%B 月名 January,…
%b 月名缩写 Jan,…
%d 日 31-Jan
%A 星期 Sunday,…
%a 星期缩写 Sun,…
%H 时(24时制) 00-23
%I 时(12时制) 12-Jan
%p 上午/下午 AM,PM
%M 分 00-59
%S 秒 00-59

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值