先导入time模块。
import time
sleep(2) #加载完后休息两秒,里面参数的单位是秒,再继续加载
时间戳:通过时间差来表示具体的时间(指定时间到1970年1月1日0时0分0秒(格林威治时间)之间的时间差(单位是秒))
时间戳保存时间的优点:1)节约内存 2)方便加密
t1 = time.time()
print(t1) #1661477265.853159 一般不用文本形式存储数据:"2022-8-26 09:15"
localtime() ——获取当前时间(结构体时间)
localtime(时间戳) —— 将指定时间戳转换成本地时间对应结构体时间
t2 = time.localtime()
print(t2) #time.struct_time(tm_year=2022, tm_mon=8, tm_mday=26, tm_hour=9, tm_min=27, tm_sec=45, tm_wday=4, tm_yday=238, tm_isdst=0)
print(t2.tm_year,t2.tm_mon,t2.tm_mday) #2022 8 26
t3 = time.localtime(1661477481.495538)
print(t3)
time.mktime(结构体时间)
result=time.mktime(t2)
print(result)
time.strftime(时间格式,结构体时间)
# 'xxxx年xx月xx日'
result = time.strftime('%Y年%m月%d日', t4)
print(result)
# 星期 xx:xx
result = time.strftime('%a %H:%M', t4)
print(result) # Fri 09:11
# 上午 xx:xx 、下午 xx:xx
result = time.strftime('%p %H:%M', t4)
print(result) # AM 09:11
time.strptime(字符串时间,结构体时间)
print(time.strptime('2022/8/26','%Y/%m/%d'))
print(time.strptime('2022-8-26 9:52','%Y-%m-%d %H:%M'))
提供多种方式处理日期和时间。
datetime类的使用方法是首先创建一个datetime对象,然后通过对象的方法和属性显示日期及时间。
from datetime import datetime, timedelta
from time import localtime
使用datetime.now()获得当前日期和时间对象,返回一个datetime类型,精确到微秒。
t1 = datetime.today()
print(t1)
t2 = datetime.now()
print(t2)
直接使用datetime()构造一个日期和时间对象,返回一个datetime类型,表示指定的日期和时间,可以精确到微秒。
t3 = datetime(2020, 12, 5)
print(t3) #表示年月日
t4 = datetime(2022, 8, 26, 10, 20, 59)
print(t4) #表示年月日时分秒
根据格式规范将字符串解析为时间元组。
strftime()方法是时间格式化最有效的方法,几乎可以以任何通用格式输出时间。
| 格式 | 说明 |
|---|---|
| %Y | 以世纪为十进制数的年份 |
| %m | 以十进制数字表示的月份[01,12] |
| %d | 以十进制数字表示的月份的日期[01,31] |
| %H | 小时(24小时时钟)为十进制数字[00,23] |
| %M | 分钟[00,59] |
| %S | 秒[00,61] |
| %z | 与UTC的时区偏移 |
| %a | 区域设置的缩写工作日名称 |
| %A | 区域设置的完整工作日名称 |
| %b | 区域设置的缩写月份名称 |
| %B | 区域设置的完整月份名称 |
| %c | 区域设置的适当日期和时间表示 |
| %I | 小时(12小时时钟)作为十进制数字[01,12] |
| %p | 区域设置相当于AM或PM |
t5=datetime.strptime('2022/8/26' ,'%Y/%m/%d')
print(t5)
星期值的取值范围:0~6,0表示星期1
print(t5.year)
print(t5.month)
print(t5.day)
print(t5.hour)
print(t5.minute)
print(t5.second)
print(t5.weekday())
xxxx年xx月xx日
result = t4.strftime('%Y年%m月%d日')
print(result)
返回1时间间隔对象(通过时间间隔对象可以单独获取间隔时间的完整天数和秒数)
t1 = datetime(2022, 5, 31, 9, 10)
t2 = datetime(2002, 7, 1, 19, 16)
result = t1 - t2
print(result, type(result)) # 7273 days, 13:54:00
print(result.days) # 7273
这个方法的返回类型是time.struct_time包含日期和时间信息的对象。
result = t1.timetuple()
print(result) # time.struct_time(tm_year=2022, tm_mon=5, tm_mday=31, tm_hour=9, tm_min=10, tm_sec=0, tm_wday=1, tm_yday=151, tm_isdst=-1)
result = t1.timestamp()
print(result)
print(localtime(result))
timedelta类表示时间差,可以直接实例化得到,也可以由两个datetime类型的数据做差得到。
导入
from datetime import timedelta
| 参数 | 说明 |
|---|---|
| days | 返回时间差的天数 |
| seconds | 返回时间差的秒数 |
| minutes | 返回时间差的分钟数 |
| weeks | 返回时间差的星期数 |
| years | 返回时间差的年数 |
没有月!!!
# timedelta
t1 = datetime(2022, 8, 26, 10, 46, 57)
# 10天后
result = t1 - timedelta(days=10)
print(result)
# 没有月
# 32天前
print(t1 - timedelta(days=32))
# 30分钟后
print(t1 + timedelta(minutes=30))
# 5天6小时之前
print(t1 - timedelta(days=5, hours=6))
# 3周以后
result = t1 + timedelta(weeks=3)
print(result)
导入
from random import randint,random,randrange,sample,choice,choices,shuffle
# 产生0-20之间的随机小数
print(random()*20)
# 产生5~30之间的随机小数
# 0*25~1*25 -> 0+5 ~ 25+5 -> 5 ~ 30
print(random()*(30-5)+5)
# 控制小数的小数位数round(小数,需要保留的小数位数)
print(round(3.325434,3))
随机获取指定等差数列中的一个数字。
print(range(1, 10, 2)) # 1, 3, 5, 7, 9
print(randrange(1, 10, 2))
随机获取指定序列中指定个数元素,产生一个新的列表(无放回抽样)。
result = sample([10, 34, 78, 90], 3)
print(result)
result = sample('abcd', 1)
print(result)
在序列中随机获取一个元素。
# choice
result=choice([10,203,903,33])
print(result)
有放回抽样
权重列表中的数字代表对应选项的份数。
# choices
result=choices([1,2,3,4,5],k=3)
print(result) #取三个元素,可重复
result = choices(['1000万', '10000', '100', '0'], [1, 2, 100, 200], k=2)
print(result) #1000万放了1个,10000放了2个,100放了100个,0放了200个,取两个元素
shuffle()方法将列表的所有元素打乱,随机排列。
shuffle()没有返回值
nums = [1, 2, 3, 4]
res = shuffle(nums)
print(nums)