时间模块和随机模块
1.time
模块
1.1导入时间模块
import time
1.2睡眠
sleep(时间)
时间的单位:秒
1.3获取当前时间
time()
❀时间戳
-
定义
通过时间差来表示具体的时间。 (指定时间到1970年1月1日0时0分0秒之间的时间差(格林威治时间)单位:秒)。
-
优点
a.节约内存; 时间戳:5个字节的内存空间;时间:15个字节的内存空间。 b.方便加密
-
例子
t1 = time.time() print(t1) # 1661562578.31139
1.4获取本地当前时间
a.localtime():获取当前时间(结构体时间)
b.localtime(时间戳):将指定时间戳转换成本地时间对应结构体时间。
使用例子:
# a
t2 = time.localtime()
print(t2)
# time.struct_time(tm_year=2022, tm_mon=8, tm_mday=27, tm_hour=9, tm_min=9, tm_sec=38, tm_wday=5, tm_yday=239, tm_isdst=0)
# b
t3 = time.localtime(0)
print(t3)
# time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
1.5将结构体时间转换成时间戳
time.mktime()
t3 = time.localtime(0)
print(time.mktime(t3)) # 0.0
1.6时间字符串和结构体时间之间的相互转换
❀结构体时间转换成字符串
strftime(时间格式,结构体时间)
# 具体用法
t2 = time.localtime()
# 'xxxx年xx月xx日'
print(time.strftime('%Y年%m月%d日', t2)) # 2022年08月27日
# 星期 xx:xx
print(time.strftime('%a %H:%M', t2)) # Sat 09:09
# 上午 xx:xx、下午 xx:xx
print(time.strftime('%p %H:%M',t2)) # AM 09:09
❀字符串时间转换成结构体时间
strptime(字符串时间,时间格式)
# 具体用法
print(time.strptime('2021/3/4', '%Y/%m/%d'))
# time.struct_time(tm_year=2021, tm_mon=3, tm_mday=4, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=63, tm_isdst=-1)
print(time.strptime('2022/8/26 9:54', '%Y/%m/%d %H:%M'))
# time.struct_time(tm_year=2022, tm_mon=8, tm_mday=26, tm_hour=9, tm_min=54, tm_sec=0, tm_wday=4, tm_yday=238, tm_isdst=-1)
2.datetime
模块-时间模块
1.1导入datetime
模块
# 类
datetime,date,time,timedelta
# 导入模块
from datetime import datetime,timedelta
1.2datetime
类
-
获取当前时间
datetime.today() datetime.now()
示例:
t1 = datetime.today() print(t1, type(t1)) # 2022-08-27 09:32:55.314544 <class 'datetime.datetime'> t2 = datetime.now() print(t2, type(t2)) # 2022-08-27 09:32:55.314544 <class 'datetime.datetime'>
-
根据时间值创建时间对象
datetime(年, 月, 日, 时, 分, 秒)
示例:
t3 = datetime(2022, 8, 26) print(t3) # 2022-08-26 00:00:00 t4 = datetime(2022, 8, 26, 10, 20, 30) print(t4) # 2022-08-26 10:20:30
-
根据时间字符串创建时间对象
datetime.strptime(时间字符串, 格式)
示例:
t5 = datetime.strptime('2022/7/2', '%Y/%m/%d') print(t5) # 2022-07-02 00:00:00
-
单独获取具体的时间信息
时间对象.信息 星期从0-6表示星期1-天
t5 = datetime.strptime('2022/7/2', '%Y/%m/%d') print(t5) # 2022-07-02 00:00:00 # 4)单独获取具体的时间信息:时间对象.信息 print(t5.year) # 2022 print(t5.month) # 7 print(t5.day) # 2 print(t5.weekday()) # 5表示星期六
-
将时间对象转换成字符串时间
时间对象.strftime(时间格式)
示例:
print(t5.strftime('%Y年%m月%d日')) # 2022年07月02日
-
求时间差值
时间对象1 - 时间对象2 返回一个时间间隔对象(通过时间间隔对象可以单独获取间隔时间的完整天数和秒数)
示例:
t1 = datetime(2000, 1, 8, 9, 30) t2 = datetime(2004, 6, 24, 8, 39) result = t2 - t1 print(result) # 1628 days, 23:09:00 print(result.days) # 1628 print(result.seconds) # 83340
-
时间对象转换成结构体
时间对象.timetuple()
示例:
result = t1.timetuple() print(result) # time.struct_time(tm_year=2000, tm_mon=1, tm_mday=8, tm_hour=9, tm_min=30, tm_sec=0, tm_wday=5, tm_yday=8, tm_isdst=-1)
-
时间对象转时间戳
时间对象.timestamp()
示例:
from time import localtime result = t1.timestamp() print(result) # 947295000.0 print(localtime(result)) # # time.struct_time(tm_year=2000, tm_mon=1, tm_mday=8, tm_hour=9, tm_min=30, tm_sec=0, tm_wday=5, tm_yday=8, tm_isdst=0)
1.3timedelta
类:时间间隔类
a.N天前:... - timedelta(days=N)
b.N天后:... + timedelta(days=N)
c.组合使用(xx天xx小时之后):... + timedelta(days=xxx, hours=xxx)
d.其他类似
年:years=
小时:hours=
分钟:minutes=
秒:seconds=
周:weeks=
具体用法
t1 = datetime(2022, 10, 1, 10, 8, 30)
print(t1) # 2022-10-01 10:08:30
# 10天以后的时间
result = t1 + timedelta(days=10)
print(result) # 2022-10-11 10:08:30
# 30天前对应的时间
result = t1 - timedelta(days=30)
print(result) # 2022-09-01 10:08:30
# 30分钟以后
result = t1 + timedelta(minutes=30)
print(result) # 2022-10-01 10:38:30
# 4周以后
result = t1 + timedelta(weeks=4)
print(result) # 2022-10-29 10:08:30
# 组合使用3天7小时之后
result = t1 + timedelta(days=3, hours=7)
print(result) # 2022-10-04 17:08:30
3.randon
模块-随机模块
控制小数的小数位数:round(小数,需要保留的小数位数)
1.1导入随机模块
from random import randint,random,randrange, sample, choice, choices, shuffle
1.2randint
随机整数
a = randint(1,100) # 1-100的随机整数
1.3`random: 随机小数
random(): 产生0到1的随机小数
random()*N: 产生0到N之间的随机小数
random()*(N-M) + M: 产生M - N之间的随机小数
示例:
# 1)random(): 产生0到1的随机小数
print(random())
# 2)random()*N: 产生0到N之间的随机小数
# 产生0-20之间的随机小数
print(random()*20)
# 3)random()*(N-M) + M: 产生M - N之间的随机小数
# 产生5-30之间的随机小数
print(random()*25 + 5)
1.4randrange
randrange(start, end, step):随机获取指定等差数列中的一个数字
示例:
print(randrange(1,10,2)) # 获取1,3,5,7,9之中随机一个数
1.5sample
sample(序列,个数): 随机获取指定序列中指定个数个元素,产生一个新的列表。(无放回抽样)
示例:
result = sample([10, 34, 99, 100], 2)
print(result)
1.6choice
choice(序列):随机获取一个元素
示例:
result = choice([10, 34, 99, 100])
print(result)
1.7choices
choices(序列,权重,求和权重,数量) 有放回抽样
示例:
# 权重列表中的数字代表相应选项的份数
result = choices([10, 34, 99, 100],[100, 1, 1,1], k=3)
print(result) # [100, 10, 100]有重复的说明放回。
1.8shuffle
shuffle(列表): 洗牌
示例:
nums = [10, 34, 78, 99]
shuffle(nums)
print(nums)