Python学习日记(十六) time模块和random模块
time模块
python表示时间的三种方式:时间戳、元祖(struct_time)、格式化时间字符串
三种格式之间的转换:
1.时间戳
就是从1970年1月1日0点0分0秒开始按秒计算的偏移量,时间戳所给的时间是给计算机识别的
- import time
- t = time.time()
- print(t,type(t)) #1566992452.458001 <class 'float'>
时间戳->结构化时间:
- import time
- t = time.time()
- print(t) #1566994939.2002344
- print(time.gmtime(t)) #返回格林威治时间 time.struct_time(tm_year=2019, tm_mon=8, tm_mday=28, tm_hour=12, tm_min=22, tm_sec=19, tm_wday=2, tm_yday=240, tm_isdst=0)
- print(time.localtime(t)) #返回当地时间 time.struct_time(tm_year=2019, tm_mon=8, tm_mday=28, tm_hour=20, tm_min=22, tm_sec=19, tm_wday=2, tm_yday=240, tm_isdst=0)
ctime():时间戳->格式化字符串时间
- import time
- #time.ctime(时间戳) 如果不传回参数,直接返回当前时间的字符串
- t = time.time()
- print(time.ctime(t)) #Wed Aug 28 21:18:09 2019
- print(time.ctime()) #Wed Aug 28 21:18:09 2019
2.格式化时间字符串
输出之后能转化成人能够更好阅读的格式格式
- %y 两位数的年份表示(00-99)
- %Y 四位数的年份表示(000-9999)
- %m 月份(01-12)
- %d 月内中的一天(0-31)
- %H 24小时制小时数(0-23)
- %I 12小时制小时数(01-12)
- %M 分钟数(00=59)
- %S 秒(00-59)
- %a 本地简化星期名称
- %A 本地完整星期名称
- %b 本地简化的月份名称
- %B 本地完整的月份名称
- %c 本地相应的日期表示和时间表示
- %j 年内的一天(001-366)
- %p 本地A.M.或P.M.的等价符
- %U 一年中的星期数(00-53)星期天为星期的开始
- %w 星期(0-6),星期天为星期的开始
- %W 一年中的星期数(00-53)星期一为星期的开始
- %x 本地相应的日期表示
- %X 本地相应的时间表示
- %Z 当前时区的名称
- %% %号本身
用法:
- import time
- t=time.strftime('%Y-%m-%d-%X')
- print(t,type(t)) #2019-08-28-19:59:44 <class 'str'>
- t=time.strftime('%Y/%m/%d %H/%M/%S')
- print(t,type(t)) #2019/08/28 20/04/33 <class 'str'>
格式化字符串时间->结构化时间
- import time
- t = time.strptime('2019-7-5','%Y-%m-%d')
- print(t) #time.struct_time(tm_year=2019, tm_mon=7, tm_mday=5, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=186, tm_isdst=-1)
- t = time.strptime('2019-7-5 15:20:30','%Y-%m-%d %X')
- print(t) #time.struct_time(tm_year=2019, tm_mon=7, tm_mday=5, tm_hour=15, tm_min=20, tm_sec=30, tm_wday=4, tm_yday=186, tm_isdst=-1)
3.元祖(struct_time)
元祖是用来对时间进行操作
- import time
- print(time.struct_time(time.localtime())) #time.struct_time(tm_year=2019, tm_mon=8, tm_mday=28, tm_hour=20, tm_min=11, tm_sec=15, tm_wday=2, tm_yday=240, tm_isdst=0)
结构化时间->时间戳
- import time
- #time.mktime(结构化时间)
- t = time.time()
- time_tuple = time.localtime(t)
- print(time.mktime(time_tuple)) #1566996176.0
结构化时间->格式化字符串时间
- import time
- #time.strftime('格式化时间','结构化时间') 结构化时间若不传则显示当前时间
- t = time.time()
- print(time.strftime('%Y-%m-%d %X')) #2019-08-28 20:49:54
- print(time.strftime('%Y-%m-%d %X',time.localtime(t))) #2019-08-28 20:49:54
time.asctime():结构化时间->格式化字符串时间
- import time
- #time.asctime(结构化时间) 如果不传参数,直接返回当前时间的字符串
- t = time.time()
- print(time.asctime(time.localtime(t))) #Wed Aug 28 21:11:09 2019
- print(time.asctime()) #Wed Aug 28 21:11:09 2019
4.计算时间差
- import time
- tuple_time1 = time.mktime(time.strptime('2018-7-30 15:20:30','%Y-%m-%d %H:%M:%S'))
- print(tuple_time1) #1532935230.0
- tuple_time2 = time.time()
- time_dif = tuple_time2 - tuple_time1
- print(time_dif) #34064346.31246209
- struct_t = time.localtime(time_dif)
- print(struct_t) #time.struct_time(tm_year=1971, tm_mon=1, tm_mday=30, tm_hour=14, tm_min=19, tm_sec=6, tm_wday=5, tm_yday=30, tm_isdst=0)
- print('相差了{year}年,{month}月,{day}日,{hour}小时,{minute}分钟,{second}秒'.format(year=struct_t.tm_year-1970,month=struct_t.tm_mon-1,day=struct_t.tm_mday-1,hour=struct_t.tm_hour,minute=struct_t.tm_min,second=struct_t.tm_sec))
- #相差了1年,0月,29日,14小时,19分钟,6秒
5.方法总结
1.time.allzone()
返回格林威治西部的夏令时地区的偏移秒数,如果该地区在格林威治东部会返回负值(如西欧,包括英国)
- import time
- print(time.altzone) #-32400
2.time.asctime([tupletime])
接收一个时间元祖并返回一个可读形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串
- import time
- print(time.asctime(time.localtime(time.time()))) #Wed Aug 28 22:13:30 2019
- print(time.asctime(time.gmtime(time.time()))) #Wed Aug 28 14:13:30 2019
3.time.clock()
以浮点数计算的秒数返回当前的CPU时间
4.time.ctime([secs])
作用相当于asctime(localtime(secs)),未给参数相当于asctime()
- import time
- print(time.ctime(time.time())) #Wed Aug 28 22:21:34 2019
- print(time.ctime(777777777)) #Thu Aug 25 09:22:57 1994
5.time.gmtime([[secs]])
将一个时间戳转换为UTC时区(0时区)的struct_time,可选的参数sec表示从1970-1-1以来的秒数.其默认值为time.time(),函数返回time.struct_time类型的对象.(struct_time是在time模块中定义的表示时间的对象)
- import time
- print(time.gmtime()) #time.struct_time(tm_year=2019, tm_mon=8, tm_mday=28, tm_hour=14, tm_min=27, tm_sec=25, tm_wday=2, tm_yday=240, tm_isdst=0)
- print(time.gmtime(777777777)) #time.struct_time(tm_year=1994, tm_mon=8, tm_mday=25, tm_hour=1, tm_min=22, tm_sec=57, tm_wday=3, tm_yday=237, tm_isdst=0)
6.time.localtime([secs])
接收时间戳(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取0或1,取决于当地当时是不是夏令时)
- int tm_sec; /* 秒 – 取值区间为[0,59] */
- int tm_min; /* 分 - 取值区间为[0,59] */
- int tm_hour; /* 时 - 取值区间为[0,23] */
- int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */
- int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
- int tm_year; /* 年份,其值等于实际年份减去1900 */
- int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
- int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
- int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的时候,tm_isdst为0;不了解情况时,tm_isdst()为负。
- import time
- print(time.localtime()) #time.struct_time(tm_year=2019, tm_mon=8, tm_mday=28, tm_hour=22, tm_min=33, tm_sec=31, tm_wday=2, tm_yday=240, tm_isdst=0)
7.time.mktime([tupletime])
接受时间元组并返回时间戳(1970纪元后经过的浮点秒数)
参数为结构化的时间或者完整的9位元组元素
- import time
- t_tu = (1997,7,15,21,15,47,3,7,0)
- print(time.mktime(time.localtime(time.time()))) #1567003342.0
- print(time.mktime(t_tu)) #868972547.0
- print(time.asctime(t_tu)) #Thu Jul 15 21:15:47 1997
8.time.sleep([secs])
推迟调用线程的运行,secs指秒数
9.time.strftime(fmt[,tupletime])
结构化时间->格式化字符串时间
- import time
- t = (2009, 2, 17, 17, 3, 38, 1, 48, 0)
- t = time.mktime(t)
- print(time.strftime("%b %d %Y %H:%M:%S", time.gmtime(t))) #Feb 17 2009 09:03:38
10.time.strptime(str,fmt='%a %b %d %H:%M:%S %Y')
格式化字符串时间->结构化时间
- import time
- struct_time = time.strptime("30 Nov 00", "%d %b %y")
- print(struct_time) #time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
11.time.time()
返回当前时间的时间戳(1970纪元后经过的浮点秒数)
12.time.tzset()
根据环境变量TZ重新初始化时间相关设置
random模块
1.随机生成小数
- import random
- r1 = random.random() #随机生成一个浮点数且范围在[0,1)
- print(r1) #0.7858956615300541
- r2 = random.uniform(1,5) #随机生成一个1-5的浮点数
- print(r2) #3.3810711855378663
- r3 = (random.random()*6) + 10 #随机生成一个10-15的小数
- print(r3) #13.023785045128168
2.随机生成整数
- import random
- r1 = random.randint(1,5) #随机生成一个1-5的整数
- print(r1) #
- r2 = random.randrange(1,10,2) #随机生成一个1-10之间的奇数 2代表间隔
- print(r2) #
- r3 = random.randrange(0,10,4) #随机生成一个0-10间能被4整除的数
- print(r3) #
- r4 = random.randrange(1,10,3) #随机生成一个0-10间能被3整除余1的数
- print(r4) #
3.随机返回一个或多个值
- import random
- #random.choice()里面的参数可以是一个列表、元祖和字符串
- print(random.choice(['a', 1, [5, 'k']])) #[5, 'k']
- print(random.choice('asdas')) #'s'
- print(random.choice(range(10))) #
- print(random.choice(('a',['a','b'],1,2))) #['a', 'b']
- #dandom.sample()多个字符中生成指定数量的随机字符,结果存在一个列表中
- print(random.sample('asd2asd2',5)) #['a', 'd', 's', 'a', 's']
4.打乱列表顺序
- import random
- li = [['k',2],1,5,'a','b']
- random.shuffle(li)
- print(li) #[['k', 2], 'a', 5, 1, 'b']
5.生成随机验证码
- import random
- def v_code():
- code = ''
- for i in range(5):
- num=random.randint(0,9)
- alf=chr(random.randint(65,90))
- add=random.choice([num,alf])
- code="".join([code,str(add)])
- return code
- print(v_code())
Python学习日记(十六) time模块和random模块的更多相关文章
- Python学习日记(十九) 模块导入
模块导入 当文件夹中有这样一个自定义的command模块 在它的内部写下下列代码: print('这个py文件被调用!') def fuc(): print('这个函数被调用!') 然后我们在comm ...
- Python学习日记(六)——内置函数和文件操作(lambda)
lambda表达式 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: # 普通条件语句 if 1 == 1: name = 'prime' else: name = 'c ...
- Python学习日记(十八) 序列化模块
什么是序列? 就是每一个元素被有序的排成一列 什么是序列化? 就是将原本的列表.字典等内容转化成字符串的过程 什么时候会用到序列化? 数据存储(把数据放在文件.数据库),网络传输等 序列化的目的 1. ...
- Python学习日记(十五) collections模块
在内置函数(dict.list.set.tuple)的基础上,collections模块还提供了几个其他的数据类型:Counter.deque.defaultdict.namedtuple和Order ...
- Python学习日记(十四) 正则表达式和re模块
正则表达式: 它是字符串的一种匹配模式,用来处理字符串,可以极大地减轻处理一些复杂字符串的代码量 字符组:它是在同一位置可能出现的各种字符组成了一个字符组,用[]表示,但是它的结果只能是一个数字或者一 ...
- Python 学习 第十六篇:networkx
networkx是Python的一个包,用于构建和操作复杂的图结构,提供分析图的算法.图是由顶点.边和可选的属性构成的数据结构,顶点表示数据,边是由两个顶点唯一确定的,表示两个顶点之间的关系.顶点和边 ...
- python 学习笔记十六 django深入学习一 路由系统,模板,admin,数据库操作
django 请求流程图 django 路由系统 在django中我们可以通过定义urls,让不同的url路由到不同的处理函数 from . import views urlpatterns = [ ...
- Python学习(十六)—— 数据库
一.数据库介绍 数据库(Database,DB)是按照数据结构来组织.存储和管理数据的,并且是建立在计算机存储设备上的仓库. 数据库指的是以一定方式存储在一起.能为多个用户共享.具有尽可能小的冗余度. ...
- Python学习札记(十六) 高级特性2 迭代
参考:迭代 Note 1.如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). 在C.C++.Java等语言中,for循 ...
随机推荐
- tensorflow到底难不难写
发信人: xhsoldier01 (风大人), 信区: ITExpress 标 题: Re: 没有GPU,tensorflow,AI公司都得死掉 发信站: 水木社区 (Thu Oct 10 20:25 ...
- pycharm项目添加.gitignore忽略.idea文件夹
本地项目结构: .gitignore文件中添加: at_alsv_pro/.idea/SearchImage.iml at_alsv_pro/.idea/misc.xml at_alsv_pro/.i ...
- 运维笔记--Linux查找指定目录下某段时间的文件
查找指定目录下,60天之前的文件:find /mnt/xml_data -mtime +60 -name "*.xml" 找到并统计数量:find /mnt/xml_data -m ...
- 基于EasyNVR摄像机网页无插件直播服务二次开发实现H5播放页面的简单集成方案
我们通常在构架一套视频SaaS应用的过程中,将平台设计为3层:视频硬件层(视频源).视频能力平台(vPaaS).视频应用平台(vSaaS),视频硬件包括各种IPC.NVR.编码器等视频生成设备,vPa ...
- centos7.3部署memcached服务
我们需要下载libevent和memcached这两个压缩包进行安装,可使用以下百度网盘链接进行下载 链接:https://pan.baidu.com/s/1vehZ5odzXFKwNjWT9_W0T ...
- [LeetCode] 403. Frog Jump 青蛙跳
A frog is crossing a river. The river is divided into x units and at each unit there may or may not ...
- [神经网络与深度学习][计算机视觉]SSD编译时遇到了json_parser_read.hpp:257:264: error: ‘type name’ declared as function ret
运行make之后出现如下错误: /usr/include/boost/property_tree/detail/json_parser_read.hpp:257:264: error: 'type n ...
- springboot打war包部署到tomcat
1:build.gradle plugins { id 'org.springframework.boot' version '2.1.5.RELEASE' id 'java' } apply plu ...
- socket-01
对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端
- 15 Filter过滤器和Listener监听器
1.Filter:过滤器 (1) 概念:生活中的过滤器:净水器,空气净化器,土匪.web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能.过滤器的作用:一般用于完成通用的 ...