常用模块——time、datetime、random模块

本文介绍了Python中处理时间的各种方法,包括使用time模块、datetime模块进行时间的表示、转换和运算,以及如何利用random模块生成随机数。通过具体实例展示了时间格式化、日期运算和随机数生成的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

time模块

模块导入及常用方法
import time

time.sleep(秒数)  # 推迟指定的时间再运行,以秒为单位
time.time()  # 获取当前时间戳
表示时间的三种格式
  • 时间戳(timestamp):表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。
import time 

time_s = time.time()
print(time_s,type(time_s))

# 执行结果:1643034808.2001889 <class 'float'>
  • 格式化时间字符串(format string):格式化时间表示的是普通的字符串格式的时间表示。
import time

format_time = time.strftime("%Y-%m-%d %X")
print(format_time, type(format_time))

# 执行结果:2022-01-20 22:36:32 <class 'str'>

补充: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 当前时区的名称
%% %号本身
  • 结构化时间(struct time元组):struct_time元组共有9个元素,分别为(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
import time

time.localtime()  # localtime将一个时间戳转换为当前时区的struct_time
time.gmtime()  # localtime将一个时间戳转换为UTC时区的struct_time

# 执行结果:
time.struct_time(tm_year=2022, tm_mon=1, tm_mday=24, tm_hour=22, tm_min=43, tm_sec=48, tm_wday=0, tm_yday=24, tm_isdst=0)
time.struct_time(tm_year=2022, tm_mon=1, tm_mday=24, tm_hour=14, tm_min=44, tm_sec=35, tm_wday=0, tm_yday=24, tm_isdst=0)

补充:参数解释

索引(Index)属性(Attribute)值(Values)
0tm_year(年)比如2011
1tm_mon(月)1 - 12
2tm_mday(日)1 - 31
3tm_hour(时)0 - 23
4tm_min(分)0 - 59
5tm_sec(秒)0 - 60
6tm_wday(weekday)0 - 6(0表示周一)
7tm_yday(一年中的第几天)1 - 366
8tm_isdst(是否是夏令时)默认为0
不同时间格式之间的转换

image-20220124225706204

代码演示:

# 结构化时间
now_time = time.localtime()
print(now_time)

# 把结构化时间转换为时间戳格式
print(time.mktime(now_time))

# 把结构化时间转换为格式化时间
# %Y年-%m月-%d天 %X时分秒=%H时:%M分:%S秒
print(time.strftime("%Y-%m-%d %X", now_time))

# 把格式化时间化为结构化时间,它和strftime()是逆操作关系
print(time.strptime('2022-01-20 12:14:22', '%Y-%m-%d %X'))

# 把结构化时间表示为这种形式:'Sun Jun 20 23:21:05 1993'。
print(time.asctime())

# 如果没有参数,将会将time.localtime()作为参数传入。
print(time.asctime(time.localtime()))

# 把一个时间戳转化为time.asctime()的形式。
print(time.ctime())

# 如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
print(time.ctime(time.time()))

datetime模块

自定义日期
import datetime

res = datetime.date(2022, 1, 20)
print(res)  # 2022-01-20
获取本地时间
import datetime

print(datetime.datetime.today())  # 2022-01-24 23:08:14.458017
print(datetime.datetime.now())  # 2022-01-24 23:09:18.659681
print(datetime.date.today())  # 2022-01-24
res = datetime.datetime.today()
print(res.year)  # 2022
print(res.month)  # 1
print(res.day)  # 24
print(res.hour)  # 23
print(res.second)  # 4
print(res.minute)  # 12
print(res.weekday())  # 0
print(res.isoweekday())  # 1
对时间进行运算操作

​ 可以通过timedelta对象产生时间差,然后再对日期进行运算操作。

import datetime

# 获得本地日期 年月日
tday = datetime.date.today()
# 定义操作时间 day=3 也就是可以对另一个时间对象加3天或者减少3点
tdelta = datetime.timedelta(days=3)

print(tday + tdelta)

"""
    日期对象 = 日期对象 +/- timedelta对象
    timedelta对象 = 日期对象 +/- 日期对象
"""

# 定义日期对象
now_date1 = datetime.date.today()
# 定义timedelta对象
lta = datetime.timedelta(days=6, hours=10, minutes=20, microseconds=1111,weeks=4)
now_date2 = now_date1 + lta  # 日期对象 = 日期对象 +/- timedelta对象
print(type(now_date2))  # <class 'datetime.date'>

print(now_date2)
lta2 = now_date1 - now_date2  # timedelta对象 = 日期对象 +/- 日期对象
print(lta2)


import datetime

dt_utcnow = datetime.datetime.utcnow()  
print(dt_utcnow)

练习:计算举例今年过生日还有多少天

import datetime


birthday = datetime.date(2022, 12, 21)
now_date = datetime.date.today()
days = birthday - now_date  

print('生日:{}'.format(birthday))
print('今天的日期:{}'.format(tday))
print('距离生日还有/{}天'.format(days))

random模块

产生随机小数
import random

# 产生大于0且小于1之间的小数
print(random.random())   

#大于1小于5的随机小数
print(random.uniform(1,5)) 
产生随机整数
import random

# 产生大于等于1且小于等于5之间的整数
print(random.randint(1,5))  

# 产生大于等于1且小于10之间的奇数
print(random.randrange(1,10,2))
选择
import random

#随机选择一个返回
res = random.choice([1,'23',[4,5]])  # #1或者23或者[4,5]
print(res)

#随机选择多个返回,返回的个数为函数的第二个参数
res = random.sample([1,'23',[4,5]],2) # #列表元素任意2个组合
print(res)
打乱列表顺序
import random

l1 = [1,23,55,66,89]
random.shuffle(item)
print(l1)

random.shuffle(l1)
print(l1)

练习:产生任意位数的验证码,验证码组成为数字、大小写字母

def get_code(n=4):
    code = ''
    for i in range(n):
        num = str(random.randint(0, 9))
        # A-Z
        upper = chr(random.randint(65, 90))  # a:97
        # a-z
        lower = chr(random.randint(97, 122))
        code += random.choice([num, lower, upper])
    return code

code = get_code(4)
code1 = get_code(8)
code2 = get_code(10)
print(code)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值