第三十四篇 time模块、datetime模块、random模块
一、time模块
一般用于不同的时间格式的转换
import time
1、时间戳
时间戳:表示的是从计算机元年1970年1月1日0点0分0秒开始计算的偏移量(也就是到现在的 总秒数)
time_stamp = time.time() # 打印:1560130877.3295212,类型为浮点型
2、格式化时间
普通的字符串格式时间
# 需要输入参数,也就是输入格式,必须为字符串
time_format = time.strftime('%Y-%m-%d %X') # 打印:2019-06-10 09:42:48,字符串类型
# 第二种。用什么格式接收,打印效果就是什么格式
time_format = time.strftime('%Y-%m-%d %H:%M:%S') # 打印:2019-06-10 09:42:48,字符串类型
3、结构化时间
结构化的时间(struct time):struct_time元组共有9个元素共九个元素,分别为(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
# 本地时区的结构化时间(北京时间)
time_struct_local = time.localtime()
'''打印结果:time.struct_time(tm_year=2019, tm_mon=6, tm_mday=10, tm_hour=9, tm_min=44, tm_sec=35, tm_wday=0, tm_yday=161, tm_isdst=0)'''
time_z = time.localtime(0) # 1970-1-1 8:0:0
# 格林尼治时区的结构化时间(UTC_GMT:伦敦/本初子午线标界处,与我们相差8小时)
time_struct_utc = time.gmtime()
time_z = time.localtime(0) # 1970-1-1 0:0:0
4、不同格式的时间的转换
# 格式化转结构化
time.strptime(time_strftime,'%Y-%m-%d %H:%M:%S')
# 结构化转格式化
time.strftime('%Y-%m-%d %H:%M:%S',time_struct_local)
# 结构化转时间戳
time.mktime(time_struct_utc)
# 时间戳转结构化
time.localtime(time_stamp)
time.sleep(2) # 暂停程序,睡眠2秒
5、其它用法
自己了解
二、datetime模块
一般用于时间的加减
import datetime
# datetime.datetime.now() 返回当前时间
now = datetime.datetime.now()
# 2019-06-10 10:06:42.425131 不是字符串类型
now_str = datetime.datetime.now().strftime('%y-%m-%d %H:%M:%S')
# 2019-06-10 10:06:42 是字符串类型
# datetime.timedelta() 更改时间,默认参数为天,且只能往下改
alter_time1 = now + datetime.timedelta(9) # 2019-06-19 10:11:53.738889
alter_time2 = now - datetime.timedelta(days=9) # 2019-06-01 10:14:30.071985
alter_time3 = now - datetime.timedelta(hours=48) # 2019-06-08 10:15:32.886089
# replace() 修改时间,可以输入年月日时分秒等多种时间参数
now.replace(year=2008,month=6,day=20,hour=12,minute=0,second=30)
# 2008-06-20 12:00:30.618896
格式化时间的参数(来自网上):
%a 星期几的简写
%A 星期几的全称
%b 月分的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的后两位数字
%d 十进制表示的每月的第几天
%D 月/天/年
%e 在两字符域中,十进制表示的每月的第几天
%F 年-月-日
%g 年份的后两位数字,使用基于周的年
%G 年分,使用基于周的年
%h 简写的月份名
%H 24小时制的小时
%I 12小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%M 十时制表示的分钟数
%n 新行符
%p 本地的AM或PM的等价显示
%r 12小时的时间
%R 显示小时和分钟:hh:mm
%S 十进制的秒数
%t 水平制表符
%T 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
%U 第年的第几周,把星期日做为第一天(值从0到53)
%V 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从0到6,星期天为0)
%W 每年的第几周,把星期一做为第一天(值从0到53)
%x 标准的日期串
%X 标准的时间串
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号
三、random模块
一般用于生成随机数
import random
# random.random() 不需要参数
# 在(0,1)之间随机抽出一个小数,不会出现0和1,数学上的闭区间
print(random.random()) # 0.2594726682072306
# random.randint() 两个整型参数
# 在[1,10]之间随机抽出一个整数,可以抽到1和10,数学上的开区间
print(random.randint(1,10)) # 9
# random.uniform() 两个数字类型参数
# 在[1,10]之间随机抽出一个小数,不会出现整数(取到的整数也会以浮点数形式存在)
print(random.uniform(1,10)) # 1.2527230757043832
print(random.uniform(1,1)) # 1.0
# random.randrange() 两个整型参数
# 在[1,10)之间随机抽出一个整数,可以抽到1,不能抽到10,顾头不顾尾,和range很像
print(random.randrange(1,10)) # 9
# random.choice() 一个容器型参数
# 从容器中随机抽出一个元素
print(random.choice([1,2,3,4,5,6])) # 5
# random.sample() 一个容器参数和一个整型参数(用于确定随机抽取的个数)
# 从容器中随机抽取多个元素,并以列表的形式存储
print(random.sample(['a',2,'b',3],2)) # [3, 'b']
# random.shuffle() 一个容器参数
# 打乱容器中的元素顺序,相当于重新“洗牌”
lis = [1,5,'c',8,'jo']
print(random.shuffle(lis)) # None
print(lis) # [8, 1, 'jo', 5, 'c']

浙公网安备 33010602011771号