2、随机数和时间模块
随机数模块
在现实开发当中,随机数的使用场景是很多的,有的时候为了测试一个东西,我们会随机的产生一些数据,然后拿着这些数据去做测试,那么随机数也是Python内建模块之一random;
random:返回一个0到1之间到浮点数;
randint:接受两个正整数,第一个为起始数,一个是结束数,返回一个区间正整数;
choice:接受一个序列,该方法可以从这个序列中随机选择一个元素;
randrange:该方法可以在指定范围的正整数中挑选一个正整数,接受三个正整数,第一个为起始数,第二个为结束数,第三个为步长;
uniform:和randrange类似,只不过它接受两个参数,一个为起始数,一个为结束数,并且返回一个区间浮点数;
shuffle:接受一个序列,返回一个打乱后的序列;
sample:接受一个序列,和一个样本数,返回这个序列中指定个数的样本数,并且进行打乱顺序;
时间模块
但凡是个系统,时间是非常重要的一个指标,对于一个电商网站来讲,每一笔交易争分夺秒,所以说时间往往都是必须记录都字段之一,时间模块一般就是对几点几时几分进行处理,或者对时间戳进行处理;
时间字符串格式
在日常开发中,我们会看到各式各样格式的时间,需要对其进行各种操作,比如转换成指定系统或数据库能匹配的格式时间,那么此时,我们就需要用到时间字符串格式,将其解析并转换成我们需要的格式,格式很多,如下表;
格式
|
描述
|
%a
|
星期几的缩写,如Wed
|
%A
|
星期几的全写,如Wednesday
|
%b
|
月份简写,如Aug
|
%B
|
月份全写,如August
|
%c
|
适当的日期时间表示,如Wed Aug 15 10:36:41 2018
|
%d
|
十进制数的月份中的一天[01,31],如15(现在为8月15日)
|
%H
|
小时(24小时制)
|
%l
|
小时(12小时制)
|
%j
|
表示今天是当年的第n天
|
%m
|
月份
|
%M
|
分钟
|
%p
|
AM(上午)或PM(下午)
|
%S
|
秒钟
|
%U
|
表示今年的第n周,星期天是第一天。(新的一年的第一个星期天之前是第0周)
|
%w
|
该周的天数,0代表周日,1代表周一,依此类推
|
%W
|
表示今年的第n周,星期一是第一天
|
%x
|
区域设置的适当日期表示形式。(新的一年的第一个星期一之前是第0周)
|
%X
|
适宜的时间表示,如10:36:41
|
%y
|
无世纪年份,如18(年)
|
%Y
|
有世纪年份,如2018(年)
|
%z
|
时区偏移,表示与UTC/GMT格式+HHMM或-HHMM的正负时差,其中H表示十进制小时数,M表示十进制分钟数
|
%Z
|
时区名称(如果没有时区,则没有字符)
|
%%
|
%的表示
|
datatime
datatime模块进行了重新封装,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo;
date类
date对象表示理想化日历中的日期(年、月和日),即当前公历日历在两个方向上无限延伸。第一年的一月一日叫做第一天,第一年的一月二日叫做第二天,以此类推;
# 类构造方法
date():初始化一个date对象;
# 类方法
date.max:date对象所能表示的最大日期;
date.min:date对象所能表示的最小日期;
date.resolution:date对象表示日期的最小单位。这里是天;
date.today():返回当前本地日期的date对象,默认返回年月日;
date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;
date.year:返回当前时间对象的年份;
date.month:返回当前时间对象的月份;
date.day:返回当前时间对象的天数,针对当前时间对象月份的多少天,如果当前月份是31天,那么就返回相对这31天的多少天;
# 对象方法
date.replace(year, month, day):依据关键字参数给出的新值,返回一个新的日期;
date.timetuple():返回一个类似time.localtime()的返回值。Hours、minutes和seconds为0;
date.weekday():返回一星期中的第几天,其中星期一是0,星期日是6;
date.isoweekday():返回一星期中的第几天,其中星期一是1,星期日是7;
date.isocalendar():返回一个三元组,年月份;
date.isoformat():返回以ISO 8601 格式‘YYYY-MM-DD’表示日期的字符串。例如,date(2002, 12, 4).isoformat() == '2002-12-04';
date.ctime():返回表示日期的字符串;
date.strftime(format):返回一个表示日期的字符串,由显式的格式字符串控制;
# datetime还有很多方法,详情见Python3.5.2标准库;
转换时间戳
datetime.date类默认是没有timestamp方法的,所以我们需要将datetime.date类生成的时间对象,转为时间戳的时候,需要借助于time模块,使用mktime方法;
import datetime,time
dt=datetime.date(2021,10,26)
print(time.mktime(dt.timetuple())) # 1635177600.0
time类
Time对象表示一天中的(本地)时间,独立于任何特定的日子,并且可以通过tzinfo对象进行调整;
# 类构造方法
time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None):初始化一个time对象,时分秒为秒;
# 类方法
time.max:time对象所能表示的一天最大时间,即23:59:59.999999;
time.min:time对象所能表示的一天最小时间,即00:00:00;
time.resolution:date对象表示日期的最小单位。这里是天;
time.hour:返回当前时间对象的小时;
time.minute:返回当前时间对象的分钟;
time.second:返回当前时间对象的秒数;
time.microsecond:返回当前时间对象的微秒数;
# 对象方法
time.replace(year, month, day):依据关键字参数给出的新值,返回一个新的时间;
time.isoformat():返回以ISO8601格式HH:MM:SS.mmmmmm表示间的字符串;
time.strftime():返回一个表示time的字符串,由显式的格式字符串控制;
datetme类
datetime对象是一个包含date对象和time对象所有信息的单个对象。类似date对象,datetime假定当前公历日历在两个方向上延伸;类似time对象,datetime假设每天有精确的3600*24秒;
# 类构造方法
datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None):初始化一个datetime对象,年月日时分秒为秒;
# 类方法
datetime.today:返回当前本地日期时间,即2020-12-12 23:59:59.999999;
datetime.now(tz=None):返回本地当前的日期和时间。如果可选参数tz为None或未指定;
datetime.utcnow():返回当前UTC日期和时间;
datetime.fromtimestamp(timestamp, tz=None):返回与POSIX时间戳对应的本地日期和时间;
datetime.utcfromtimestamp(timestamp):返回与POSIX时间戳对应的UTC datetime;
datetime.strptime(date_string, format):返回对应于date_string的datetime,根据format进行解析;
datetime.min:可表示的最早datetime;
datetime.min:可表示的最晚datetime;
datetime.resolution:不相等的datetime对象之间的最小可能差值;
datetime.year:返回当前时间对象的年份;
datetime.month:返回当前时间对象的月份;
datetime.day:返回当前时间对象的天数,1-30/31;
datetime.hour:返回当前时间对象的小时;
datetime.minute:返回当前时间对象的分钟;
datetime.second:返回当前时间对象的秒数;
datetime.microsecond:返回当前时间对象的微秒数;
# 对象方法
datetime.date():返回具有相同年、月和日的date对象;
datetime.time():返回具有相同小时、分钟、秒和微秒的time对象;
datetime.timetz():返回具有相同小时、分钟、秒、微秒和tzinfo属性的time对象;
datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]):返回具有相同属性的 datetime,但通过任何关键字参数指定新值的那些属性除外;
datetime.astimezone(tz=None):返回带有新tzinfo属性tz的datetime对象,调整日期和时间数据使结果与self 的UTC时间相同,但为tz的本地时间;
datetime.timetuple():返回一个time.struct_time,类似time.localtime()的返回值;
datetime.timestamp():返回对应于datetime实例的POSIX时间戳;
datetime.weekday():返回一星期中的第几天,其中星期一是0,星期日是6;
datetime.isoweekday():返回一星期中的第几天,其中星期一是1,星期日是7;
datetime.isocalendar():返回一个3元组, (ISO year, ISO week number, ISO weekday);
datetime.isoformat(sep='T'):返回以ISO 8601 格式YYYY-MM-DDTHH:MM:SS.mmmmmm表示日期和时间的字符串;
datetime.ctime():返回一个表示日期和时间的字符串,例如datetime(2002, 12, 4, 20, 30, 40).ctime() == 'Wed Dec 4 20:30:40 2002';
datetime.strftime(format):返回一个表示日期和时间的字符串,由显式的格式字符串控制;