Python time模块详解(常用函数实例讲解,非常好)


Posted in Python onApril 24, 2014

在开始之前,首先要说明这几点:

1.在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素。由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。
2.UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时。
3.时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。返回时间戳方式的函数主要有time(),clock()等。
4.元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。下面列出这种方式元组中的几个元素:

索引(Index) 属性(Attribute) 值(Values)
0 tm_year(年) 比如2011
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(weekday) 0 - 6(0表示周日)
7 tm_yday(一年中的第几天) 1 - 366
8 tm_isdst(是否是夏令时) 默认为-1

接着介绍time模块中常用的几个函数:

1)time.localtime([secs]):将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。

>>> time.localtime()
time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=14, tm_min=14, tm_sec=50, tm_wday=3, tm_yday=125, tm_isdst=0)
>>> time.localtime(1304575584.1361799)
time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=14, tm_min=6, tm_sec=24, tm_wday=3, tm_yday=125, tm_isdst=0)

2)time.gmtime([secs]):和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。
>>>time.gmtime()
time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=6, tm_min=19, tm_sec=48, tm_wday=3, tm_yday=125, tm_isdst=0)

3)time.time():返回当前时间的时间戳。
>>> time.time() 
1304575584.1361799

4)time.mktime(t):将一个struct_time转化为时间戳。
>>> time.mktime(time.localtime())
1304576839.0

5)time.sleep(secs):线程推迟指定的时间运行。单位为秒。

6)time.clock():这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32上QueryPerformanceCounter()为基础,它比毫秒表示更为精确)

import time  
if __name__ == '__main__':  
    time.sleep(1)  
    print "clock1:%s" % time.clock()  
    time.sleep(1)  
    print "clock2:%s" % time.clock()  
    time.sleep(1)  
    print "clock3:%s" % time.clock()

运行结果:

clock1:3.35238137808e-006
clock2:1.00004944763
clock3:2.00012040636

其中第一个clock()输出的是程序运行时间

第二、三个clock()输出的都是与第一个clock的时间间隔

7)time.asctime([t]):把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。如果没有参数,将会将time.localtime()作为参数传入。

>>> time.asctime()
'Thu May 5 14:55:43 2011'

8)time.ctime([secs]):把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
>>> time.ctime()
'Thu May 5 14:58:09 2011'
>>> time.ctime(time.time())
'Thu May 5 14:58:39 2011'
>>> time.ctime(1304579615)
'Thu May 5 15:13:35 2011'

9)time.strftime(format[, t]):把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。

格式 含义 备注
%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 本地相应日期
%X 本地相应时间
%y 去掉世纪的年份(00 - 99)
%Y 完整的年份
%Z 时区的名字(如果不存在为空字符)
%% ‘%'字符

备注:

“%p”只有与“%I”配合使用才有效果。
文档中强调确实是0 - 61,而不是59,闰年秒占两秒(汗一个)。
当使用strptime()函数时,只有当在这年中的周数和天数被确定的时候%U和%W才会被计算。
举个例子:

>>> time.strftime("%Y-%m-%d %X", time.localtime())
'2011-05-05 16:37:06'

10)time.strptime(string[, format]):把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。

>>> time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X')
time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1)

在这个函数中,format默认为:"%a %b %d %H:%M:%S %Y"。

最后,我们来对time模块进行一个总结。根据之前描述,在Python中共有三种表达方式:1)timestamp 2)tuple或者struct_time 3)格式化字符串。

它们之间的转化如图所示:

Python time模块详解(常用函数实例讲解,非常好)

Python 相关文章推荐
Python处理JSON数据并生成条形图
Aug 05 Python
Python中元组,列表,字典的区别
May 21 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
Nov 16 Python
Python方法的延迟加载的示例代码
Dec 18 Python
Python 做曲线拟合和求积分的方法
Dec 29 Python
python 实现检验33品种数据是否是正态分布
Dec 09 Python
Python使用多进程运行含有任意个参数的函数
May 02 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 Python
解决PDF 转图片时丢文字的一种可能方式
Mar 04 Python
Python进阶学习之带你探寻Python类的鼻祖-元类
May 08 Python
Python之matplotlib绘制饼图
Apr 13 Python
Python 时间操作例子和时间格式化参数小结
Apr 24 #Python
python抓取网页图片并放到指定文件夹
Apr 24 #Python
python字符串替换示例
Apr 24 #Python
python自动安装pip
Apr 24 #Python
python网络编程示例(客户端与服务端)
Apr 24 #Python
python使用PyFetion来发送短信的例子
Apr 22 #Python
Python BeautifulSoup中文乱码问题的2种解决方法
Apr 22 #Python
You might like
删除无限级目录与文件代码共享
2006/07/12 PHP
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
JS的数组的扩展实例代码
2008/07/09 Javascript
javascript 限制输入和粘贴(IE,firefox测试通过)
2008/11/14 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
跟老齐学Python之??碌某?? target=
2014/09/12 Python
利用pandas读取中文数据集的方法
2018/07/25 Python
python数据结构学习之实现线性表的顺序
2018/09/28 Python
Python多进程写入同一文件的方法
2019/01/14 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
python环境下安装opencv库的方法
2020/03/05 Python
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
《雨霖铃》教学反思
2014/02/22 职场文书
入党思想汇报怎么写
2014/04/03 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
上课不认真检讨书
2014/09/17 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
Vue3.0 手写放大镜效果
2021/07/25 Vue.js