python学习之模块-模块(三)
5.6 time 模块
已经知道的常用的time方法:time.time()获取当前时间的时间戳;time.sleep(num)线程推迟指定的时间(秒)后再继续往下运行。
时间的表示方式
大致可以分为:时间戳、元组(struct_time)、格式化的时间字符串
时间戳--timestamp
时间戳表示的是从1970年1月1日00:00:00开始,按秒计时,类型是float
格式化的时间字符串(Format String)
| %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 当前时区的名称 | %% % 号本身 |
元组(struct_time)
struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
| 索引(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 - 60 |
| 6 | tm_wday(weekday) | 0 - 6(0表示周一) |
| 7 | tm_yday(一年中的第几天) | 1 - 366 |
| 8 | tm_isdst(是否是夏令时) | 默认为0 |
【总结】时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的
import time #导入时间模块
#时间戳
print(time.time())
# 1561729203.008572
#时间字符串
ft = time.strftime("%Y-%m-%d %H:%M:%S") #格式化里的字符必须是ASCII里的元素,不能是汉字
print(ft) #2019-06-28 21:42:24
#时间元组
tt = time.localtime()
print(tt)
# time.struct_time(tm_year=2019, tm_mon=6, tm_mday=28, tm_hour=21, tm_min=44, tm_sec=5, tm_wday=4, tm_yday=179, tm_isdst=0)
几种格式之间的转换

#格式化时间---->结构化时间
ft1 = time.strftime("%Y-%m-%d %H:%M:%S")
st1 = time.strptime(ft1,"%Y-%m-%d %H:%M:%S") #转成结构化时间,后边的格式必须要与格式化时间结构一致
print(st1)
#结构化时间--->时间戳
tt1 = time.mktime(st1) #转换后,时间戳紧缺到小数点后一位
print(tt1)
#时间戳--->结构化时间
st2 = time.localtime(tt1) #不传参,就是获取当前的结构化时间
print(st2)
st3 = time.gmtime(tt1)
print(st3)
#结构化时间--->格式化时间
ft2 = time.strftime("%Y-%m-%d %H:%M:%S",st3) #strftime要把更改的时间放在第二个位置参数
print(ft2)
asctime 与 ctime
- struct_time---->format time 格式固定
st = time.localtime() #获取当前结构化时间
print(st)
ft = time.asctime() #获取当前格式化时间
print(ft)
ft1 = time.asctime(st) #把结构化时间转换成固定格式的格式化时间,
print(ft1)
- timestamp ----> format time 格式固定
tt = time.time()
ft = time.ctime() #不传参,获取当前格式化时间
ft1 = time.ctime(tt) #把时间戳时间转换成固定格式的格式化时间,
print(ft1)
【练习】计算时间差
sta_time = time.mktime(time.strptime('2017-12-23 08:30:00','%Y-%m-%d %H:%M:%S'))
end_time = time.mktime(time.strptime('2018-12-23 08:30:00','%Y-%m-%d %H:%M:%S'))
dif_time = end_time - sta_time
st = time.gmtime(dif_time)
print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(st.tm_year-1970,st.tm_mon-1,
st.tm_mday-1,st.tm_hour,
st.tm_min,st.tm_sec))
5.7 datetime模块
import datetime
now = datetime.datetime.now()
print(now)
print(datetime.datetime.now()+datetime.timedelta(weeks=4)) #4周后
print(datetime.datetime.now()+datetime.timedelta(weeks=-3)) #3周前
print(datetime.datetime.now() + datetime.timedelta(days=-2)) # 2天前
print(datetime.datetime.now() + datetime.timedelta(days=3)) # 三天后
print(datetime.datetime.now() + datetime.timedelta(hours=5)) # 5小时后
print(datetime.datetime.now() + datetime.timedelta(hours=-6)) # 6小时前
print(datetime.datetime.now() + datetime.timedelta(minutes=-10)) # 10分钟前
print(datetime.datetime.now() + datetime.timedelta(minutes=15)) # 15分钟后
print(datetime.datetime.now() + datetime.timedelta(seconds=-30)) # 30秒前
print(datetime.datetime.now() + datetime.timedelta(seconds=40)) # 40秒后
current_time = datetime.datetime.now()
print(current_time.replace(year=2008)) # 直接调整到2008年
print(current_time.replace(month=11)) # 直接调整到11月份
print(current_time.replace(year=1997,month=4,day=25)) # 1997-04-25 18:49:05.898601
# 将时间戳转化成时间
print(datetime.date.fromtimestamp(1232132131)) # 2009-01-17
5.8 random模块
产生随机数
import random
# 随机生成小数
n1 = random.random() #随机生成0-1范围内的小数
# 自定义范围的小数
n2 = random.uniform(1,4) #可用于发红包
# 随机整数
n3 = random.randint(1,9) #自定义范围内的整数, 1 <= n3 <= 9
n4 = random.randrange(1, 10, 2) #[2,4,6,8]范围内的偶数,1 <= n4 < 10范围内的偶数
# 随机选择一个返回值
n5 = random.choice([1,'23',['a','c']]) #返回列表长得一个元素
n6 = random.sample((1,'23',['a','c']),2) #随机返回列表中的两个组合,原序列不变,返回值顺序不定
n7 = random.sample('12345',3) #原序列不变,返回值顺序不定
# 这里的范围必须是有序类型的数据:Population must be a sequence or set,不能是字典和int类型
# 打乱列表顺序,仅限列表
li = [1,2,3,4,5,6]
random.shuffle(li)
print(li)
【练习】生成4位校验码
import random
def auth_num():
s = ''
for i in range(4):
num = random.randint(0,9)
alp = chr(random.randint(65,90))
ALP = chr(random.randint(97,122)) #chr的作用Return a Unicode string of one character with ordinal i
add = random.choice([num,alp,ALP])
s += str(add)
return s
code = auth_num()
print(code)
python学习之模块-模块(三)的更多相关文章
- python学习之argparse模块
python学习之argparse模块 一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行 ...
- Python学习day19-常用模块之re模块
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python学习day18-常用模块之NumPy
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python学习 Part4:模块
Python学习 Part4:模块 1. 模块是将定义保存在一个文件中的方法,然后在脚本中或解释器的交互实例中使用.模块中的定义可以被导入到其他模块或者main模块. 模块就是一个包含Python定义 ...
- Python学习 —— 阶段综合练习三
Python学习 —— 阶段综合练习三 综合之前文件与文件夹操作的学习,做以下实例练习:(建议先不要看代码,自己先试着写:代码仅供参考,有多种实现方法) 1. 目录文件遍历(二层目录结构) 1). ...
- Python学习 :常用模块(三)----- 日志记录
常用模块(三) 七.logging模块 日志中包含的信息应有正常的程序访问日志,还可能有错误.警告等信息输出 python的 logging 模块提供了标准的日志接口,你可以通过它存储各种格式的日志, ...
- python学习笔记五 模块上(基础篇)
模块学习 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...
- Python学习笔记之模块与包
一.模块 1.模块的概念 模块这一概念很大程度上是为了解决代码的可重用性而出现的,其实这一概念并没有多复杂,简单来说不过是一个后缀为 .py 的 Python 文件而已 例如,我在某个工作中经常需要打 ...
- Python学习笔记-常用模块
1.python模块 如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失.因此,如果你想要编写一些更大的程序,为准备解释器输入使用一个文本编辑器会更好,并以那个文件替代作 ...
- python学习之random模块
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
随机推荐
- LVS+Heartbeat安装部署文档
LVS+Heartbeat安装部署文档 发表回复 所需软件: ipvsadm-1.24-10.x86_64.rpmheartbeat-2.1.3-3.el5.centos.x86_64.rpmhear ...
- C#使用BinaryReader类读取二进制文件
Close():关闭BinaryReader对象: Read():从指定流读取数据,并将指针迁移,指向下一个字符. ReadDecimal():从指定流读取一个十进制数值,并将在流中的位置向前 ...
- std::this_thread::sleep_until
头文件:<thread> (C++11) template<class Clock, class Duration> void sleep_u ...
- Matlab的基本矩阵运算
(1)加减.数乘 >> a=[1,2;3,4];b=[5,6;7,8]; >> a+b ans = 6 8 10 12 >> a.*2 ans = 2 4 6 8 ...
- Invalid [xxx] in servlet mapping 、 <url-pattern>的匹配规则 、 DefaultServlet介绍
真的是很容易被忽视的错误,servlet 配置url的时候遇到问题,这个之前确实没有详细了解过. 出现这个错误的时候往往伴随着一系列高大上的错误,比如会出现类似[StandardEngine[Cata ...
- 什么是BFC(块级格式上下文)?
㈠什么是BFC? BFC 全称为 块格式化上下文 (Block Formatting Context) . 定义:浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, ta ...
- Python实用黑科技——找出最大/最小的n个元素
需求: 快速的获取一个列表中最大/最小的n个元素. 方法: 最简便的方法是使用heapq模组的两个方法nlargest()和nsmallest(),例如: In [1]: import heapqIn ...
- 【转】有rand7(可以随机生成1到7的数据的随机函数),如何产生rand10(随机产生1-10的数)
今天停GJP说在面试的时候碰到了一道这样的题目:有rand7(可以随机生成1到7的数据的随机函数),如何产生rand10(随机产生1-10的数) 感觉很有意思,找到了这篇博客,感觉解法很好玩,转载在这 ...
- White Lines
D. White Lines 主要思路就是利用差分 对于行:如果在某一个点上,向右下角涂掉 k*k 的矩形能够使得新出现一行 "B" 那么就在这个点上 +1(这里的加 +1 需要利 ...
- [CSP-S模拟测试]:统计(树状数组+乱搞)
题目传送门(内部题120) 输入格式 第一行,两个正整数$n,m$. 第二行,$n$个正整数$a_1,a_2,...,a_n$,保证$1\leqslant a_i\leqslant n$,可能存在相同 ...