时间模块相关知识

一、python中时间日期格式符号

%y   两位数的年份表示(00-99)
%Y   四位数的年份表示(0000-9999)
%m   月份
%d   月中的一天
%H   24小时制小时数
%I   12小时制小时数
%M   分钟数
%S   秒
%a   本地简化星期名称
%A   本地完整星期名称
%b   本地简化的月份名称
%B   本地完整的月份名称
%c   本地相应的日期表示的时间表示
%j   年内的一天(000-366)
%p   本地A.M. 或 P.M. 等价符
%U   一年中的星期数(0-53)星期天为星期的开始
%w   星期(0-6),星期天为星期的开始
%W   一年中的星期数(00-53)星期一为星期的开始
%x   本地相应的日期表示
%X   本地相应的时间表示
%Z   当前时区的名称
%%   %号本身


代码验证如下:
# time()时间戳
res = time.time()
time.sleep(3)

# strftime()时间字符串
res = time.strftime("%Y-%m-%d")  # 年-月-日

# 注意: %X相当于%H:%M:%S
res = time.strftime('%Y-%m-%d %H:%M:%S')
res = time.strftime('%Y-%m-%d %X')

res = time.strftime('%Y-%m-%d %I')  # %I是12小时制时间数

res = time.strftime('%y-%m')  # 23-06

res = time.strftime('%y-%m %b')  # 23-06 Jun
res = time.strftime('%y-%m %B')  # 23-06 June

# %c本地相应的日期表示的时间表示
res = time.strftime('%y-%m %c')  # 23-06 Fri Jun  9 15:05:49 2023

# %j年内的一天(000-366)
res = time.strftime('%y-%m %j')  # 23-06 160

# %p本地A.M. 或 P.M. 等价符
res = time.strftime('%y-%m %p')  # 23-06 PM

# %U一年中的星期数(0-53)星期天为星期的开始
res = time.strftime('%y-%m %U')  # 23-06 23
res = time.strftime('%y-%m %W')  # 23-06 23

# %w星期(0-6),星期天为星期的开始
res = time.strftime('%y-%m %w')  # 23-06 5

res = time.strftime('%y-%m %%a')  # 23-06 %a

结构化时间 --> %a %b %d %H:%M:%S %Y串

# 结构化时间 --> %a %b %d %H:%M:%S %Y串
# time.asctime(结构化时间) 如果不传参数,直接返回当地时间的格式化串
time_asctime = time.asctime(time.localtime(1500000000))  # # Fri Jul 14 10:40:00 2017
asctime = time.asctime()  # Fri Jun  9 15:52:58 2023

# time.ctime(时间戳) 若不传参,直接返回当前的格式化串
ctime = time.ctime()  # Fri Jun  9 15:54:33 2
ctime = time.ctime(1500000000)  # Fri Jul 14 10:40:00 2017

time_mktime = time.mktime(time.strptime('2023-6-9 12:48:32', '%Y-%m-%d %H:%M:%S'))
now_mktime = time.mktime(time.strptime('1995-5-12 16:04:00', '%Y-%m-%d %H:%M:%S'))
htime = time_mktime - now_mktime
struct_time = time.gmtime(htime)
print('过去了%d年%d月%d天%d小时%d分钟%d秒' % (struct_time.tm_year-1970, struct_time.tm_mon-1,
                                   struct_time.tm_mday-1, struct_time.tm_hour, struct_time.tm_min, struct_time.tm_sec))
#time.strftime("格式定义","结构化时间")  结构化时间参数若不传,则显示当前时间
>>>time.strftime("%Y-%m-%d %X")
'2017-07-24 14:55:36'
>>>time.strftime("%Y-%m-%d",time.localtime(1500000000))
'2017-07-14'

#字符串时间-->结构化时间
#time.strptime(时间字符串,字符串对应格式)
>>>time.strptime("2017-03-16","%Y-%m-%d")
time.struct_time(tm_year=2017, tm_mon=3, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=75, tm_isdst=-1)
>>>time.strptime("07/24/2017","%m/%d/%Y")
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=205, tm_isdst=-1)

time_tuple = time.localtime(1500000000)
res = time.mktime(time_tuple)
# print(res)  # 1500000000.0

在这里插入图片描述

二、time模块

times.stamp 时间戳
struct_time 结构化时间
Format string 格式化时间
1. 时间戳 ---> 结构化时间
time.gmtime(时间戳)    #UTC时间,与英国伦敦当地时间一致
time.localtime(时间戳) #当地时间。例如我们现在在北京执行这个方法:与UTC时间相差8小时,UTC时间+8小时 = 北京时间 
>>>time.gmtime(1500000000)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)

>>>time.localtime(1500000000)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)

2. 结构化时间-->时间戳 
#time.mktime(结构化时间)
>>>time_tuple = time.localtime(1500000000)
>>>time.mktime(time_tuple)
1500000000.0

三、datetime模块

# 定义操作时间 days=7 也就是可以对另一个时间对象加上7天或者减少7天
# tdelta = datetime.timedelta(days=7, hours=10, minutes=20)
# tdelta = datetime.timedelta(minutes=20, seconds=10)
# tdelta = datetime.timedelta(weeks=3)

tdelta = datetime.timedelta(days=7, hours=10)
tday = datetime.datetime.today()

print('7天之后的日期是:%s' % (tday + tdelta))  # 2023-06-17 01:38:08.306938
print('7天之前的日期是:%s' % (tday - tdelta))  # 2023-06-02 05:38:08.306938
'''
    日期对象 = 日期对象 +/- timedelta对象
    timedelta对象 = 日期对象 +/- 日期对象 
'''

birthday = datetime.date(2023, 11, 3)
now_date = datetime.date.today()
days = birthday - now_date
print(days)  # 147 days

dt_today = datetime.datetime.today()  # 当前时间
dt_now = datetime.datetime.now()
dt_utcnow = datetime.datetime.utcnow()
print(dt_utcnow)  # 2023-06-09 08:09:22.278334
print(dt_now)  # 2023-06-09 16:09:22.278334 

四、random模块

# 生成一个0-1之间的随机数
print(random.random())

# 生成一个大于1小于10之间的随机数
print(random.uniform(1, 10))

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

# 生成一个大于等于1小于10之间的奇数
print(random.randrange(1, 10, 2))

# choice()
print(random.choice([1, '23', [4, 5], 5, 6]))
print(random.choice(['一等奖', '二等奖', '三等奖']))

# 抽奖助手
print(random.sample([1, '23', [4, 5], 5, 6], 3))  # 任意组合
item = ['A', '2', '3', '4', '5', 'J', 'Q']
res = random.shuffle(item)
print(res)  # None
print(item)  # ['J', 'Q', '5', '3', '4', 'A', '2']

# 练习题
# 随机生成验证码,大小写数字的组合
def get_code(n):
    # 定义一个空字符串
    code = ''
    for i in range(n):
        # 随机生成一个数字
        num = str(random.randint(0, 9))
        # 随机生成一个大写字母
        upper_chr = chr(random.randint(65, 90))
        # 随机生成一个小写字母
        lower_chr = chr(random.randint(97, 122))
        code += random.choice([num, upper_chr, lower_chr])
    return code

五、sys模块

import sys

print(sys.path)
print(sys.argv)  # ['E:/python26/day22/04 sys模块.py']

try:
    print(sys.argv[1])
    print(sys.argv[2])
    print(sys.argv[3])
except:
    print('出错了')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值