【python】详解time模块功能asctime、localtime、mktime、sleep、strptime、strftime、time等函数以及时间的加减运算
在Python中,与时间处理相关的模块有:time、datetime以及calendar。学会计算时间,对程序的调优非常重要,可以在程序中狂打时间戳,来具体判断程序中哪一块耗时最多,从而找到程序调优的重心处。这里先来讲一个time模块。
time模块所包含的函数能够实现以下功能:获取当前的时间、操作时间和日期、从字符串读取时间及格式化时间为字符串。
timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量;返回时间戳的函数主要有time()、clock()等
struct_time时间元组,共有九个元素组。gmtime(),localtime(),strptime()
format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。
不同格式之间的转换如图:
其中format_string 类型的时间和struct_time之间可以转换,timestamp时间戳可以和struct_time之间进行转化,但是时间戳和格式化时间是不能直接转换的。
struct_time元组结构:
format time结构化表示:
1、time.time()当前时间的时间戳,返回float数据,自1970年1月1日开始按照秒计算的偏移量,可以进行差值计算得到秒差
In [1]: import time
#首先定义第一个时间点的时间戳a
In [2]: a = time.time()
计算当前时间点的时间与a之间的时间间隔,以秒为单位
In [3]: b = time.time() -a
In [4]: b
Out[4]: 10.753291130065918
2、time.clock()该函数有两个功能:
在第一次调用的时候,返回的是程序运行的实际时间;
以第二次之后的调用,返回的是自第一次调用后,到这次调用的时间间隔
在win32系统下,这个函数返回的是真实时间(wall time),而在Unix/Linux下返回的是CPU时间。
#第一次调用时,返回程序实际的运行时间
In [6]: time.clock()
Out[6]: 4.266666666666667e-07
#第二次调用返回的是距离上一次调用的时间间隔
In [7]: time.clock()
Out[7]: 3.48674048
#该次调用返回的是距离上一次调用的时间间隔
In [8]: time.clock()
Out[8]: 7.2176200533333335
3、time.gmtime([secs])可以将timestamp时间戳转化为时间元组
#如果没有给定时间戳,直接返回当前时点的国际伦敦时间
In [5]: time.gmtime()
Out[5]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=14, tm_min=49, tm_sec=37, tm_wday=4, tm_yday=12, tm_isdst=0)
#可以将时间戳转化为国际时间
In [9]: a = time.time()
In [10]: time.gmtime(a)
Out[10]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=15, tm_min=1, tm_sec=51, tm_wday=4, tm_yday=12, tm_isdst=0)
1
2
3
4
5
6
7
4、time.localtime([secs])可以将timestamp时间戳转为时间元组
#可以将时间戳转为本地时间
In [13]: time.localtime()
Out[13]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=23, tm_min=6, tm_sec=14, tm_wday=4, tm_yday=12, tm_isdst=0)
#如果没有给定时间戳,直接返回当前时点的本地时间
In [12]: time.localtime(a)
Out[12]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=23, tm_min=1, tm_sec=51, tm_wday=4, tm_yday=12, tm_isdst=0)
5、time.mktime(t):将一个struct_time转化为时间戳
time.mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数表示时间的浮点数。如果输入的值不是一个合法的时间,将触发 OverflowError 或 ValueError。
参数:t – 结构化的时间或者完整的9位元组元素
#将struct_time时间元组转化为时间戳
In [14]: time.mktime(time.localtime())
Out[14]: 1515770088.0
6、time.sleep(secs):线程推迟指定的时间运行 线程睡眠指定时间,单位为秒。
In [15]: time.time()
...: for i in range(3):
...: print(i)
...: time.sleep(5)
...: time.time()
Out[15]: 1515770366.3641038
7、time.asctime([t])*生成固定格式的时间表示格式,把一个表示时间的元组或者struct_time*表示为’Sat Jan 13 21:56:34 2018’这种形式。如果没有给参数,会将time.localtime()作为参数传入。
参数:t – 9个元素的元组或者通过函数 gmtime() 或 localtime() 返回的时间值;
In [1]: import time
In [2]: time.asctime()
Out[2]: 'Sat Jan 13 21:56:34 2018'
1
2
3
8、time.ctime([secs]) 生成固定格式的时间表示格式,把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果为指定参数,将会默认使用time.time()作为参数。它的作用相当于time.asctime(time.localtime(secs)) 。
参数:sec – 要转换为字符串时间的秒数
In [4]: time.time()
Out[4]: 1515852108.7154894
In [5]: time.ctime(time.time())
Out[5]: 'Sat Jan 13 22:01:56 2018'
In [6]: a = time.time()
In [7]: time.ctime(a)
Out[7]: 'Sat Jan 13 22:02:05 2018'
9、time.strftime( format [, t] ) 通过函数将struct_time转成格式字符串,把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串,格式由参数format决定。如果未指定,将传入time.localtime()。如果元组中任何一个元素越界,就会抛出ValueError的异常。函数返回的是一个可读表示的本地时间的字符串。
参数:
format:格式化字符串
t :可选的参数是一个struct_time对象
#将时间元组转化为format年月日格式
In [15]: time.strftime("%Y-%m-%d",time.gmtime())
Out[15]: '2018-01-13'
#%X返回当地时间
In [17]: time.strftime("%Y-%m-%d %X")
Out[17]: '2018-01-13 22:16:35'
#返回当地的日期和时间
In [18]: time.strftime("%x %X")
Out[18]: '01/13/18 22:17:14'
#直接使用字符串拼接成格式时间字符串
In [21]: tt = time.gmtime()
In [22]: str(tt.tm_year) + "年" + str(tt.tm_mon) + "月" + str(tt.tm_mday) + "日"
Out[22]: '2018年1月13日'
10、time.strptime(string,format) 将格式字符串转化成struct_time。该函数是time.strftime()函数的逆操作。time.strptime() 函数根据指定的格式把一个时间字符串解析为时间元组。所以函数返回的是struct_time对象。
参数:string :时间字符串;format:格式化字符串;
#创建一个时间字符串变量strtime
strtime = "2018-01-13 22:20:30"
#通过strptime()函数将strtime转化成strcut_time形式,格式参数必须的"%Y-%m-%d %H:%M:%S",且必须strtime的时间参数一一匹配
In [27]: time.strptime(strtime,"%Y-%m-%d %H:%M:%S")
Out[27]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=13, tm_hour=22, tm_min=20, tm_sec=30, tm_wday=5, tm_yday=13, tm_isdst=-1)
11、time加减主要是通过时间戳的方式进行加减
In [28]: a = time.time()
In [29]: b = time.time()
In [30]: a+b
Out[30]: 3031709297.679469
In [31]: b-a
Out[31]: 10.370728731155396
【python】详解time模块功能asctime、localtime、mktime、sleep、strptime、strftime、time等函数以及时间的加减运算的更多相关文章
- [转载]python 详解re模块
原文地址:python 详解re模块作者:Rocky 正则表达式的元字符有. ^ $ * ? { [ ] | ( ) .表示任意字符 []用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字 ...
- python 详解re模块
正则表达式的元字符有. ^ $ * ? { [ ] | ( ).表示任意字符[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可以理解成或的关系.^ 如果放在字 ...
- python详解json模块
我们在做工作中经常会使用到json模块,今天就简单介绍下json模块 什么是json JSON ,全称为JavaScript Object Notation, 也就是JavaScript 对象标记,它 ...
- 33 Python 详解命令解析 - argparse--更加详细--转载
https://blog.csdn.net/lis_12/article/details/54618868 Python 详解命令行解析 - argparse Python 详解命令行解析 - arg ...
- c语言贪吃蛇详解5.GameOver功能与显示成绩
c语言贪吃蛇详解5.GameOver功能与显示成绩 以前我们已经做出来了一个能吃东西变长的蛇.不过它好像不会死... 现在就来实现一下game over的功能吧. 写个函数判断蛇是否撞到自己或者撞到墙 ...
- 【spring】jar包详解与模块依赖关系
以spring3.X为例 jar包详解 1. spring-core.jar:包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心: 2. spri ...
- Webpack探索【16】--- 懒加载构建原理详解(模块如何被组建&如何加载)&源码解读
本文主要说明Webpack懒加载构建和加载的原理,对构建后的源码进行分析. 一 说明 本文以一个简单的示例,通过对构建好的bundle.js源码进行分析,说明Webpack懒加载构建原理. 本文使用的 ...
- ECDSA高性能硬件实现——算法详解与模块划分
ECDSA全称椭圆曲线数字签名算法,它是基于素数域的椭圆曲线对信息进行加签与验签.其核心在于对信息的加签,及对加签的信息进行验签,那么下面介绍该算法流程. 假设Alice希望对消息m进行签名,并将消息 ...
- python之定义参数模块argparse(二)高级使用 --传参为函数的实现
我们在文章python之定义参数模块argparse的基本使用中介绍了argparse模块的基本使用方法 当前传入的参数只能是int.str.float.comlex类型,不能为函数,这有点不方便,但 ...
随机推荐
- [原创]HBase学习笔记(2)- 基本操作
1.使用hbase shell连接hbase 2.输入help可以查看帮助 3.输入list查看当前hbase中的所有表 4.使用create创建表test 其中test是表名,cf是列族.该表只创建 ...
- JBDC—③数据库连接池的介绍、使用和配置
首先要知道数据库连接(Connection对象)的创建和关闭是非常浪费系统资源的,如果是使用常规的数据库连接方式来操作数据库,当用户变多时,每次访问数据库都要创建大量的Connnection对象,使用 ...
- koa2学习笔记03 - 给koa2配置session ——koa2结构分层、配置数据库、接口
前言 这一章写的很没有底气,因为我完全不懂一个正经的后台应用是怎么结构分层的, 所有只能按照我自己的理解去写,即使这样也仅仅只分离出了controller层, 至于所谓的service层,dao层,完 ...
- 水仙花数(类型:一级、C++)
题目描述: 输入一个三位数n,判断是否为水仙花数,如果是则输出“YES”,不是则输出“NO”.水仙花数:是指一个3位数,它的每个位上的数字的3次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 ...
- LR分析-demo2
0.LR分析 用一个栈来保存文法符号和状态的信息,一个字符串保存输入信息. 使用栈顶的状态符号和当前的输入符号来检索分析表,来决定移进-归约分析的动作. 1.样例文法 "E>E+T&q ...
- python散记
1.AOP 将不同的类的内部中雷同的代码和重复的功能,提取出来以重用. 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等 2.新式类,经典类 新式类 ...
- 关于canvas
本人也是刚自学了一点canvas,由于js技术也烂得不行,但是还是写了个demo,提供给canvas初学者. 1.canvas是html5的新标签,与img类似, 默认只有两个属性, width, h ...
- sqli-labs (less-8-less-10)
盲注需要掌握一些MySQL的相关函数:length(str):返回str字符串的长度.substr(str, pos, len):将str从pos位置开始截取len长度的字符进行返回.注意这里的pos ...
- PTA(Basic Level)-1002 写出这个数
一 1002 写出这个数 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 1010 ...
- LIFO栈 ADT接口 链表实现
LIFO 链栈结构 typedef int ElemType; struct node{ ElemType data; struct node* next; }; typedef struct nod ...