第三十四篇 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']
posted @ 2019-06-17 11:37  newking_itman  阅读(144)  评论(0)    收藏  举报