• Python之时间模块和随机模块


    1 time模块

    先导入time模块。

    import time
    
    • 1

    1.1 睡眠:sleep(时间)

    sleep(2)		#加载完后休息两秒,里面参数的单位是秒,再继续加载
    
    • 1

    1.2 获取当前时间:time()

    时间戳:通过时间差来表示具体的时间(指定时间到1970年1月1日0时0分0秒(格林威治时间)之间的时间差(单位是秒))

    时间戳保存时间的优点1)节约内存 2)方便加密

    t1 = time.time()
    print(t1)   #1661477265.853159		 一般不用文本形式存储数据:"2022-8-26 09:15"
    
    • 1
    • 2

    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
    • 2
    • 3
    • 4
    • 5
    • 6

    1.4 将结构体时间转换成时间戳:mktime(结构体时间)

    time.mktime(结构体时间)

    result=time.mktime(t2)
    print(result)
    
    • 1
    • 2

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 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'))
    
    • 1
    • 2
    • 3

    2 datetime模块

    提供多种方式处理日期和时间。

    2.1 datetime类

    datetime类的使用方法是首先创建一个datetime对象,然后通过对象的方法和属性显示日期及时间。

    from datetime import datetime, timedelta
    from time import localtime
    
    • 1
    • 2

    2.1.1 获取当前时间

    使用datetime.now()获得当前日期和时间对象,返回一个datetime类型,精确到微秒。

    t1 = datetime.today()
    print(t1)
    t2 = datetime.now()
    print(t2)
    
    • 1
    • 2
    • 3
    • 4

    2.1.2 根据时间值创建时间对象

    直接使用datetime()构造一个日期和时间对象,返回一个datetime类型,表示指定的日期和时间,可以精确到微秒。

    t3 = datetime(2020, 12, 5)
    print(t3)		#表示年月日
    
    t4 = datetime(2022, 8, 26, 10, 20, 59)
    print(t4)		#表示年月日时分秒
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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)
    
    • 1
    • 2

    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()) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.1.5 将时间对象转换成字符串时间

    xxxx年xx月xx日

    result = t4.strftime('%Y年%m月%d日')
    print(result)
    
    • 1
    • 2

    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 
    print(result.days)  # 7273
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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)
    
    • 1
    • 2

    2.1.8 时间对象转时间戳

    result = t1.timestamp()
    print(result)
    print(localtime(result))
    
    • 1
    • 2
    • 3

    2.2 timedelta 时间间隔类

    timedelta类表示时间差,可以直接实例化得到,也可以由两个datetime类型的数据做差得到。

    导入

    from datetime import timedelta
    
    • 1
    参数说明
    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    3 随机数

    导入

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

    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))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3.2 randrange(起始值,终止值,步长)

    随机获取指定等差数列中的一个数字。

    print(range(1, 10, 2))      # 1, 3, 5, 7, 9
    print(randrange(1, 10, 2))
    
    • 1
    • 2

    3.3 sample(序列,个数)

    随机获取指定序列中指定个数元素,产生一个新的列表(无放回抽样)。

    result = sample([10, 34, 78, 90], 3)
    print(result)
    
    result = sample('abcd', 1)
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.4 choice(序列)

    在序列中随机获取一个元素。

    # choice
    result=choice([10,203,903,33])
    print(result)
    
    • 1
    • 2
    • 3

    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个,取两个元素
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.6 洗牌:shuffle(列表)

    shuffle()方法将列表的所有元素打乱,随机排列。

    shuffle()没有返回值

    nums = [1, 2, 3, 4]
    res = shuffle(nums)
    print(nums)
    
    • 1
    • 2
    • 3
  • 相关阅读:
    Python 变量类型
    Win11怎么安装语音包?Win11语音包安装教程
    HappyGBS GB28181信令服务 - 文档
    初识Java--Java数据类型
    推荐10大协作工具,测试团队必备
    C++之通俗易懂学模版
    简单的elementui倒计时按钮事件
    【电商】电商后台系统整体介绍
    C语言中short和unsigned short的取值问题和计算机组成原理
    华为数字化转型之道 方法篇 第三章 数字化转型框架
  • 原文地址:https://blog.csdn.net/m0_69100942/article/details/126559141