《标准库time、datetime、calendar、random的使用》

time库介绍

起因:开发过程中遇到了时间格式的更改需求。源时间格式从zstack接口获取,类似这样的格式Dec 14, 2019 7:55:13 PM,要转换成目标格式,类似这样2019-12-14 19:55:13。1970-01-01 00:00:00是python时间起始的点。python表示的时间范围是1970年1月1日到2038年1月19日。

一、time

time是python中处理时间的标准库

计算时间的表达
提供获取系统时间并格式化输出功能
提供系统精确计时功能,用于程序性能分析

time库包括三类函数

时间获取:time() ; ctime() ; gmtime()
时间格式化:strftime() ; strptime()
程序计时:sleep() ; perf_counter()

时间获取

函数描述
time()获取当前时间截,即计算机内部时间值,浮点数。>>>time.time()
ctime()获取当前时间并以易读方式表示,返回字符串。>>>time.ctime()
gmtime()获取当前时间,表示为计算机可处理的时间格式。>>>time.gmtime()

时间格式化

将时间以合理的方式展示出来
格式化:类似字符串格式化,需要有展示模板
展示模板由特定的格式化控制符组成

函数描述
strftime(tpl,ts)tpl是格式化模板字符串,用来定义输出效果,ts是计算机内部时间类型变量
strptime(str,tpl)str是字符串形式的时间值,tpl是格式化模板字符串,用来定义输入效果
格式化字符串日期/时间说明
%Y年份
%m月份
%B月份名称
%b月份名称缩写
%d日期
%A星期
%a星期缩写
%H小时(24h制)
%h小时(12h制)
%p上/下午
%M分钟
%s

程序计时

程序计时应用广泛
程序计时指测量起止动作所经历时间的过程

函数描述
perf_counter()返回一个CPU级别的精确时间计数值,单位为秒,由于这个计数值起点不确定,连续调用差值才有意义。>>>start = time.perf_counter();>>>end = time.perf_counter();>>>end-start
sleep(s)s拟休眠时间,单位是秒,可以是浮点数。>>>def wait(): time.sleep() ; >>>wait()

datetime库

以不同格式显示日期和时间是程序中做常用到的功能,它提供了一系列由简单到复杂的时间处理方法。datetime库可以从系统中获得时间,并以用户选择的格式输出。
datetime库以类的方式提供多种日期和时间表达方式

datetime.date:日期表示类,可以表示年、月、日等
datetime.time:时间表示类,可以表示小时、分钟、秒、毫秒等
datetime.datetime:日期和时间表时的类,功能覆盖date和time类
datetime.timedalta:与时间间隔有关的类
datetime.tzinfo:与时区有关的信息表示类

创建datetime对象有三种方法:
1、datetime.now()获当前日期和时间对象
作用:返回一个datetime类型,表示当前的日期和时间,精确到微秒
参数:无
在这里插入图片描述
2、datetime.utcnow():返回一个datetime类型,表示当前日期和时间的UTC表示,精确到微秒。
在这里插入图片描述

3、datetime.datetime():返回一个datetime类型,表示指定的日期和时间,可以精确到微秒。

datetime类的常用属性

属性描述
someday.min固定返回datetime的最小时间对象,datetime(1,1,1,0,0)
someday.max固定返回datetime的最大时间对象,datetime(9999,12,31,23,59,59,999999)
someday.year返回someday包含的年份
someday.month返回someday包含的月份
someday.day返回someday包含的日期
someday.hour返回someday包含的小时
someday.year返回someday包含的年份
someday.minute返回someday包含的分钟
someday.second返回someday包含的秒钟
someday.microsecond返回someday包含的微秒值

datetime类常用时间格式化方法

属性描述
someday.isoformat()采用ISO8601标准显示时间
someday.isoweekday()根据日期计算星期后返回1—7,对应星期一到星期日
someday.strftime(format)根据格式化字符串format进行格式化显示的方法

calendar库

calendar模块主要由Calendar类与一些模块方法构成,Calendar类又衍生了一些子孙类来帮助我们实现一些特殊的功能

Calendar模块方法

函数描述
setfirstweekday(firstweekday)指定一周的第一天,0是星期一,…,6为星期日
firstweekday()返回一周的第一天,0是星期一,…,6为星期日
isleap(year)判断指定是否是闰年,闰年为True,平年为False
leapdays(y1, y2)返回y1与y2年份之间的闰年数量,y1与y2皆为年份。包括起始年,不包括结束年
weekday(year, month, day)获取指定日期为星期几
weekheader(n)返回包含星期的英文缩写,n表示英文缩写所占的宽度
monthrange(year, month)返回一个由一个月第一个天的星期与当前月的天数组成的元组
monthcalendar(year, month)返回一个月中天数列表(不是当前月份的天数为0),按周划分,为一个二维数组。包括月份开始那周的所有日期和月份结束那周的所有日期
prmonth(theyear, themonth, w=0, l=0)打印一个月的日历,theyear指定年份,themonth指定月份,w每个单元格宽度,默认0,内部已做处理,最小宽度为2,l每列换l行,默认为0,内部已做处理,至少换行1行
month(theyear, themonth, w=0, l=0)返回一个月的日历的多行文本字符串。theyear指定年份,themonth指定月份,w每个单元格宽度,默认0,内部已做处理,最小宽度为2,l每列换l行,默认为0,内部已做处理,至少换行1行
prcal(year, w=0, l=0, c=6, m=3)打印一年的日历,w每个单元格宽度,默认0,内部已做处理,最小宽度为2,l每列换l行,默认为0,内部已做处理,至少换行1行,c表示月与月之间的间隔宽度,默认为6,内部已做处理,最小宽度为2,m表示将12个月分为m列
calendar(year, w=2, l=1, c=6, m=3)以多行字符串形式返回一年的日历,w每个单元格宽度,默认2,内部已做处理,最小宽度为2,l每列换l行,默认为1,内部已做处理,至少换行1行,c表示月与月之间的间隔宽度,默认为6,内部已做处理,最小宽度为2,m表示将12个月分为m列

calendar.Calendar(firstweekday=0)类
firstweekday为一个整数,指定一周的第一天,0是星期一(默认),6为星期日

函数描述
iterweekdays()获取一周的数字的迭代器,迭代器的第一个值与firstweekday的值相同
itermonthdates(year, month)获取一个月日期的迭代器,此迭代器会返回指定月份的所有日期,包括月份开始那周的所有日期和月份结束那周的所有日期
itermonthdays(year, month)返回一个月天数的迭代器(不是当前月份的天数为0),此迭代器将返回指定月份的日期数字,包括月份开始那周的所有日期和月份结束那周的所有日期
itermonthdays2(year, month)返回一个月天数与星期的迭代器(不是当前月份的天数为0),此迭代器将返回指定月份的日期数字与星期几所代表的数字组成的元组,包括月份开始那周的所有日期和月份结束那周的所有日期
monthdatescalendar(year, month)返回一个月日期列表,按周划分,为一个二维数组。包括月份开始那周的所有日期和月份结束那周的所有日期
monthdayscalendar(year, month)返回一个月中天数列表(不是当前月份的天数为0),按周划分,为一个二维数组。包括月份开始那周的所有日期和月份结束那周的所有日期
monthdays2calendar(year, month)返回一个月中天数与星期的列表(不是当前月份的天数为0),按周划分,为一个二维数组。包括月份开始那周的所有日期和月份结束那周的所有日期
yeardatescalendar(year, width=3)返回一年中所有的日期,为一个4维数组。width表示将一年中12个月份进行划分,每width个月为一份,每一份包含各个月份,每个月份包含周,每周包含日期信息。包括月份开始那周的所有日期和月份结束那周的所有日期
yeardayscalendar(year, width=3)返回一年中每个月的天数,为一个4维数组。width表示将一年中12个月份进行划分,每width个月为一份;每一份包含各个月份,每个月份包含周,每周包含天数信息(不是当前月份的天数为0)。包括月份开始那周的所有日期和月份结束那周的所有日期
yeardays2calendar(year, width=3)返回一年中农每个月的天数与星期的元组,为一个4维的元组列表。width表示将一年中12个月份进行划分,每width个月为一份;每一份包含各个月份,每个月份包含周,每周包含天数与星期的元组信息(不是当前月份的天数为0)。包括月份开始那周的所有日期和月份结束那周的所有日期

random库

python内置的random库主要用于产生各种分布的伪随机数序列。random库采用梅森旋转算法生成伪随机数序列,可用于除随机性要求更高的加解密算法外的大多数工程应用。
random库解析
random库的常用函数

函数描述
seed(a=None)初始化随机数种子,默认值为当前系统时间
random()生成一个[0.0,1.0)之间的随机小数
randint(a,b)生成一个[a,b]之间的整数
getrandbits(k)生成一个k比特长度的随机整数
randrange(start,stop[,step])生成一个[start,stop)之间以step为步数的随机整数
uniform(a,b)生成一个[a,b]之间的随机小数
choice(seq)从序列类型,例如列表中随机返回一个元素
shuffle(seq)将序列类型中的元素随机排列,返回打乱后的序列
sample(pop,k)从pop类型中随机选取k个元素,以列表类型返回

random库的引用方法与math库一样,可以采用下面两种方式实现:
import random

from random import*
使用random库的一些例子如下,这些语句每次执行后的结果不一定一样
在这里插入图片描述
注:本文根据嵩天老师《python语言程序设计基础》做的笔记

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值