Python之时间模块和随机模块

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)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值