概述
time、datetime、random
- 1 time模块
- 1.1 睡眠:sleep(时间)
- 1.2 获取当前时间:time()
- 1.3 获取本地当前时间:localtime()
- 1.4 将结构体时间转换成时间戳:mktime(结构体时间)
- 1.5 时间字符串和结构体时间之间的相互转换
- 1.5.1 结构体时间转换成字符串
- 1.5.2 字符串时间转换成结构体时间
- 2 datetime模块
- 2.1 datetime类
- 2.1.1 获取当前时间
- 2.1.2 根据时间值创建时间对象
- 2.1.3 根据时间字符串创建时间对象
- 2.1.4 单独获取具体的时间信息
- 2.1.5 将时间对象转换成字符串时间
- 2.1.6 求时间差:时间对象1-时间对象2
- 2.1.7 时间对象转换成结构体
- 2.1.8 时间对象转时间戳
- 2.2 timedelta 时间间隔类
- 3 随机数
- 3.1 随机小数:random()
- 3.2 randrange(起始值,终止值,步长)
- 3.3 sample(序列,个数)
- 3.4 choice(序列)
- 3.5 choices(序列,权重,求和权重,数量)
- 3.6 洗牌:shuffle(列表)
1 time模块
先导入time模块。
import time
1.1 睡眠:sleep(时间)
sleep(2)
#加载完后休息两秒,里面参数的单位是秒,再继续加载
1.2 获取当前时间:time()
时间戳:通过时间差来表示具体的时间(指定时间到1970年1月1日0时0分0秒(格林威治时间)之间的时间差(单位是秒))
时间戳保存时间的优点:1)节约内存 2)方便加密
t1 = time.time()
print(t1)
#1661477265.853159
一般不用文本形式存储数据:"2022-8-26 09:15"
1.3 获取本地当前时间:localtime()
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)
1.4 将结构体时间转换成时间戳:mktime(结构体时间)
time.mktime(结构体时间)
result=time.mktime(t2)
print(result)
1.5 时间字符串和结构体时间之间的相互转换
1.5.1 结构体时间转换成字符串
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
1.5.2 字符串时间转换成结构体时间
time.strptime(字符串时间,结构体时间)
print(time.strptime('2022/8/26','%Y/%m/%d'))
print(time.strptime('2022-8-26 9:52','%Y-%m-%d %H:%M'))
2 datetime模块
提供多种方式处理日期和时间。
2.1 datetime类
datetime类的使用方法是首先创建一个datetime对象,然后通过对象的方法和属性显示日期及时间。
from datetime import datetime, timedelta
from time import localtime
2.1.1 获取当前时间
使用datetime.now()获得当前日期和时间对象,返回一个datetime类型,精确到微秒。
t1 = datetime.today()
print(t1)
t2 = datetime.now()
print(t2)
2.1.2 根据时间值创建时间对象
直接使用datetime()构造一个日期和时间对象,返回一个datetime类型,表示指定的日期和时间,可以精确到微秒。
t3 = datetime(2020, 12, 5)
print(t3)
#表示年月日
t4 = datetime(2022, 8, 26, 10, 20, 59)
print(t4)
#表示年月日时分秒
2.1.3 根据时间字符串创建时间对象
根据格式规范将字符串解析为时间元组。
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)
2.1.4 单独获取具体的时间信息
星期值的取值范围: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())
2.1.5 将时间对象转换成字符串时间
xxxx年xx月xx日
result = t4.strftime('%Y年%m月%d日')
print(result)
2.1.6 求时间差:时间对象1-时间对象2
返回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 <class 'datetime.timedelta'>
print(result.days)
# 7273
2.1.7 时间对象转换成结构体
这个方法的返回类型是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)
2.1.8 时间对象转时间戳
result = t1.timestamp()
print(result)
print(localtime(result))
2.2 timedelta 时间间隔类
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)
3 随机数
导入
from random import randint,random,randrange,sample,choice,choices,shuffle
3.1 随机小数:random()
# 产生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))
3.2 randrange(起始值,终止值,步长)
随机获取指定等差数列中的一个数字。
print(range(1, 10, 2))
# 1, 3, 5, 7, 9
print(randrange(1, 10, 2))
3.3 sample(序列,个数)
随机获取指定序列中指定个数元素,产生一个新的列表(无放回抽样)。
result = sample([10, 34, 78, 90], 3)
print(result)
result = sample('abcd', 1)
print(result)
3.4 choice(序列)
在序列中随机获取一个元素。
# choice
result=choice([10,203,903,33])
print(result)
3.5 choices(序列,权重,求和权重,数量)
有放回抽样
权重列表中的数字代表对应选项的份数。
# 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个,取两个元素
3.6 洗牌:shuffle(列表)
shuffle()方法将列表的所有元素打乱,随机排列。
shuffle()没有返回值
nums = [1, 2, 3, 4]
res = shuffle(nums)
print(nums)
最后
以上就是腼腆摩托为你收集整理的Python之时间模块和随机模块1 time模块2 datetime模块3 随机数的全部内容,希望文章能够帮你解决Python之时间模块和随机模块1 time模块2 datetime模块3 随机数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复