time、datetime、random模块

一、time模块

该模块提供了各种函数来操作时间值。
时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数。

1. time的函数

函数说明
asctime([tuple])将时间元组转换为字符串
ctime(seconds)将自Epoch以来以秒为单位的时间转换为以本地时间为单位的字符串
get_clock_info(name: str)获取指定时钟的信息
gmtime([seconds])将 Epoch 以来的秒数转换为表示 UTC(又名 GMT)的时间元组
localtime([seconds])将 Epoch 以来的秒数转换为表示本地时间的时间元组
mktime(tuple)将本地时间的时间元组转换为自纪元以来的秒数
monotonic()单调时钟,不能倒退
monotonic_ns()单调时钟,不能倒退,以纳秒为单位
perf_counter()用于基准测试的性能计数器
perf_counter_ns()性能计数器,以纳秒为单位进行基准测试
process_time()分析的进程时间:内核和用户空间 CPU 时间的总和
process_time()分析的进程时间为纳秒:内核和用户空间 CPU 时间的总和
sleep(seconds)延迟执行给定的秒数
strftime(format[, tuple])根据格式规范将时间元组转换为字符串
strptime(string, format)根据格式规范将字符串解析为时间元组
thread_time()用于分析的线程时间:内核和用户空间 CPU 时间的总和
thread_time()以纳秒为单位进行分析的线程时间:内核和用户空间 CPU 时间的总和
time()返回自 Epoch 以来的当前时间(以秒为单位)
time_ns()返回自 Epoch 以来的当前时间(以纳秒为单位)

strptime()的常用格式代码:

格式说明
%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。

2. 代码举例

import time 


print(time.ctime(123))  
# Thu Jan  1 08:02:03 1970

print(time.time())
# 1661511692.3475158

t3 = time.localtime()
print("t3:", t3)
# t3: time.struct_time(tm_year=2022, tm_mon=8, tm_mday=26, tm_hour=18, tm_min=47, tm_sec=27, tm_wday=4, tm_yday=238, tm_isdst=0)

t4 = time.localtime(1661476302.733082)
print(t4)
print(f'{t4.tm_year}{t4.tm_mon}{t4.tm_mday}日')        # 2022年8月26日

print(time.mktime(t3))       # 1661511302.0

# 'xxxx年xx月xx日'
print(time.strftime('%Y年%m月%d日', t3))       # 2022年08月26日

# 星期 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

# '2021/8/10'
result = time.strptime('2021/8/10', '%Y/%m/%d')
print(result)

result = time.strptime('2022-5-10 19:30', '%Y-%m-%d %H:%M')
print(result)
# time.struct_time(tm_year=2022, tm_mon=5, tm_mday=10, tm_hour=19, tm_min=30, tm_sec=0, tm_wday=1, tm_yday=130, tm_isdst=-1)

二、datetime模块

它是一个具体的日期/时间和相关类型的模块。

from datetime import datetime, timedelta
from time import localtime

# 1. datetime类
# 1)获取当前时间
t1 = datetime.today()
print(t1, type(t1))	# 2022-08-26 19:07:25.224591 <class 'datetime.datetime'>

t2 = datetime.now()
print(t2)	# 2022-08-26 19:07:25.224590

# 2)根据时间值创建时间对象
t3 = datetime(2020, 12, 5)
print(t3)  # 2020-12-05 00:00:00

t4 = datetime(2022, 3, 4, 12, 50, 30)
print(t4)	# 2022-03-04 12:50:30

# 3)根据时间字符串创建时间对象
t5 = datetime.strptime('2021/3/5', '%Y/%m/%d')
print(t5)  # 2021-03-05 00:00:00

# 4)单独获取具体的时间信息
print(t5.year)		# 2021
print(t5.month)		# 3
print(t5.day)		# 5
print(t5.hour)		# 0
print(t5.minute)	# 0
print(t5.second)	# 0
print(t5.weekday()) # 4
# 星期值的取值范围:0~6,0表示星期1

# 5)将时间对象转换成字符串时间
# xxxx年xx月xx日
result = t4.strftime('%Y年%m月%d日')
print(result)  # 2022年03月04日

# 6)求时间差: 时间对象1 - 时间对象2   - 返回时间间隔对象(通过时间间隔对象可以单独获取间隔时间的完整天数和秒数)
t1 = datetime(2022, 5, 3, 9, 10)
t2 = datetime(2022, 10, 1, 10, 5)
result = t2 - t1
print(result, type(result))  # 151 days, 0:55:00
print(result.days)  # 151
print(result.seconds)  # 3300

# 7)时间对象转换成结构体
result = t1.timetuple()
print(result)  # time.struct_time(tm_year=2022, tm_mon=5, tm_mday=3, tm_hour=9, tm_min=10, tm_sec=0, tm_wday=1, tm_yday=123, tm_isdst=-1)

# 8)时间对象转时间戳
result = t1.timestamp()
print(result)
print(localtime(result))

# 2.timedelta     -      时间间隔类
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

# 32天前对应的时间
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

# 5天6小之前
result = t1 - timedelta(days=5, hours=6)
print(result)	# 2022-09-26 04:08:30

# 3周以后
result = t1 + timedelta(weeks=3)
print(result)	# 2022-10-22 10:08:30

三、random模块

random模块是随机变量生成器。

1. random的函数

函数说明
betavariateβ分布
choice随机获取一个元素 : choice(序列)
choices有放回抽样 : choices(序列,权重,求和权重,数量)
expovariate指数分布
gammavariate伽马分布
gauss高斯分布
getrandbits生成具有 k 个随机位的 int
getstate返回内部状态;可以稍后传递给 setstate()
lognormvariate对数正态分布
normalvariate正态分布
paretovariate帕累托分布, α是形状参数
randbytes生成 n 个随机字节
randint返回 [a, b] 范围内的随机整数,包括两个端点
random产生0到1的随机小数
randrange随机获取指定等差数列中的一个数字:randrange(起始值,终止值,步长), #权重列表中的数字代表对应选项的份数
sample随机获取指定序列中指定个数个元素,产生一个新的列表(无放回抽样) : sample(序列, 个数)
seed从种子初始化内部状态
setstate从 getstate() 返回的对象恢复内部状态
shuffle洗牌, 并返回 None
triangular三角分布
uniform根据四舍五入获取 [a, b) 或 [a, b] 范围内的随机数
vonmisesvariate循环数据分布
weibullvariate威布尔分布

2. 代码举例

from random import randint, random, randrange, sample, choice, choices, shuffle

  
print(random())

# 产生0~20之间的随机小数
print(random() * 20)

# 产生5~30之间的随机小数
print(random() * 25 + 5)

# 控制小数的小数位数(四舍五入):round(小数, 需要保留的小数位数)
print(round(3.1415926, 2))  # 3.14

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)

result = choice([10, 34, 78, 90])
print(result)

result = choices([10, 34, 78, 90], k=3)
print(result)

result = choices(['1000万', '10000', '100', '0'], [1, 2, 100, 200], k=2)
print(result)

nums = [10, 34, 78, 90]
shuffle(nums)
print(nums)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值