Python基础之时间模块、随机模块

发布时间 2023-06-09 14:42:17作者: Way*yy

时间模块

time 模块
'''time模块是函数内置的模块可以直接拿来用的'''

import time

# 时间的3种格式
1、时间戳:从1970年到现在经过的秒数
	作用:用于时间间隔的计算
print(time.time())	# 1686229427.2857454

2、按照某种时间格式显示的时间:2023-06-08 21:03:47  strftime()
    作用:用于展示时间
    print(time.strftime('%Y-%m-%d %H:%M:%S %p'))  # 2023-06-08 21:11:09 PM
    print(time.strftime('%Y-%m-%d %X'))  # 2023-06-08 21:11:09
    
3、结构化的时间 :localtime()
	作用:用于单独获取时间的某一部分
res = time.localtime()
print(res)
# time.struct_time(tm_year=2023, tm_mon=6, tm_mday=8, tm_hour=21, tm_min=24, tm_sec=10, tm_wday=3, tm_yday=159, tm_isdst=0)
print(res.tm_year) # 2023
print(res.tm_yday) # 159

python中时间日期格式化符号

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
datetime 模块
import datetime
# 当前时间
print(datetime.datetime.now())  # 2023-06-08 21:27:34.285882

# 往后加3天
print(datetime.datetime.now() + datetime.timedelta(days=3))  # 2023-06-11 21:27:34.285882

#往后加一周
print(datetime.datetime.now() + datetime.timedelta(weeks=1))  # 2023-06-15 21:27:34.285882

时间模块需要掌握的知识

时间格式的转换
1、# struct_time->时间戳
import time
s_time=time.localtime() # 将时间结构化
print(time.mktime(s_time)) # 将格式化时间转为时间戳  1686231591.0

2、时间戳->struct_time
tp_time=time.time() # 时间的时间戳格式
print(time.localtime(tp_time)) # 将时间戳结构化
# time.struct_time(tm_year=2023, tm_mon=6, tm_mday=8, tm_hour=21, tm_min=45, tm_sec=11, tm_wday=3, tm_yday=159, tm_isdst=0)

3、补充:世界标准时间与本地时间	gmtime
print(time.localtime()) # 本地时间
print(time.gmtime()) # 世界标准时间,了解
'本地时间与世界标准时间相差8个小时'

4、# struct_time->格式化的字符串形式的时间
s_time=time.localtime() # 结构化时间
print(time.strftime('%Y-%m-%d %H:%M:%S',s_time)) # 将结构化时间转化为格式化的时间  2023-06-08 21:52:03
print(time.strptime('1988-03-03 11:11:11','%Y-%m-%d %H:%M:%S')) # 将时间结构化

'''!!!真正需要掌握的只有一条:format string<------>timestamp'''
# '1988-03-03 11:11:11'+7

1、'''将格式化转为时间戳:format string--->struct_time--->timestamp'''
struct_time = time.strptime('1988-03-03 11:11:11', '%Y-%m-%d %H:%M:%S')
timestamp = time.mktime(struct_time) + 7 * 86400
print(timestamp) # 573966671.0

2、'''将时间戳转为格式化:format string<---struct_time<---timestamp
'''
res = time.strftime('%Y-%m-%d %X', time.localtime(timestamp))
print(res)  # 1988-03-10 11:11:11

了解知识点

import time
print(time.asctime()) # Thu Jun  8 22:15:13 2023


import datetime
print(datetime.datetime.now()) # 2023-06-08 22:15:13.306517
print(datetime.datetime.utcnow()) # 2023-06-08 14:15:13.306517

random模块(随机的)

import random

print(random.random())  # (0,1)----float    大于0且小于1之间的小数
print(random.randint(1, 3))  # [1,3]    大于等于1且小于等于3之间的整数

print(random.randrange(1, 3))  # [1,3)    大于等于1且小于3之间的整数

print(random.choice([111, 'aaa', [4, 5]]))  # 1或者23或者[4,5]

print(random.sample([111, 'aaa', 'ccc', 'ddd'], 2))  # 列表元素任意2个组合

print(random.uniform(1, 3))  # 大于1小于3的小数,如1.927109612082716

item = [1, 3, 5, 7, 9]
random.shuffle(item)  # 打乱item的顺序,相当于"洗牌"
print(item)

应用

'''随机验证码'''
import random


def make_code(size=4):
    res = ''
    for i in range(size):
        s1 = chr(random.randint(65, 90))
        s2 = str(random.randint(0, 9))
        res += random.choice([s1, s2])
    return res