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

这次来整理一下标准库time、datatime、calendar、random的相关知识及使用方法~

time库

time库是Python中处理时间的标准库
它基本上有以下三种用途:

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

调用time库的基本格式如下

import time
	time.<b>()

time库包括三类函数

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

接下来介绍一下time库的使用

函数描述
time()获取当前时间戳,即计算机内部时间值,浮点数
ctime()获取当前时间并以易读方式表示
gmtime()获取当前时间,表示为计算机可处理的时间格式

时间格式化:将时间以合理的方式展示出来

  • 格式化:类似字符串格式化,需要有战术模板
  • 展示模板由特定的格式化控制符组成
  • strftime()方法
函数描述
strftime(tpl,ts)tpl是格式模板字符串,用来定义输出效果ts是计算机内部时间类型变量
strptime(str,tpl)str是字符串形式的时间值,tpl是格式化模板字符串,用来定义输入效果

例如:

>>>t = time.gmtime()
>>>time.strftime("%Y-%m-%d %H:%M:%S",t)
'2018-01-26 12:55:20'
>>>timeStr='2018-01-26 12:55:20'
>>>time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
格式化字符串日期/时间说明值范围和实例
%Y年份0000~9999,例:1900
%m月份01~12
%B月份名称January~December,例:April
%b月份名称缩写Jan~Dec,例:Apr
%d日期01~31,例:25
%A星期Monday~Sunday,例:Wednesday
%a星期缩写Mon~Sun,例:Wed
%H小时(24h制)00~23,例:12
%h小时(12h制)01~12,例:7
%P上/下午AM,PM,例:PM
%M分钟00~59,例:26
%S00~59,例:26

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

  • 测量时间:perf_counter()
  • 产生时间:sleep()
函数描述
perf_counter()返回一个CPU级别的精确时间计数值,单位为秒。由于这个技术起点不确定,连续调用差值才有意义
sleep(s)s拟休眠时间,单位是秒,可以使浮点数

datetime库

datetime库可以从系统中获得时间,并以用户选择的格式输出。

  • datetime库以格林威治时间为基础,每天由3600*24秒精准定义

  • 该库包括两个常量:datetime.MINYEARdatetime.MAXYEAR,分别表示datetime所能表示的最小、最大年份,值分别为1与9999

  • datetime库以类的方式提供多种日期和时间表达方式:

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

由于datetime.datetime类表达形式最为丰富,所以主要介绍这个类的使用。使用datetime类需要用import保留字,具体引用datetime类的方式如下:

from datetime import datetime

datetime.datetime类的使用方式是首先创建一个datetime对象,然后通过对象的方法和属性显示时间。创建datetime对象共有三种方法:

方法描述
datetime.now()返回一个datetime类型,表示当前的日期和时间,精确到微秒,无参数
datetime.utcnow()返回一个datetime类型,表示当前日期和时间的UTC表示,精确到微秒,无参数
datetime.datetime()直接使用datetime()构造一个日期和时间对象,返回一个datetime类型,表示指定的日期和时间,可以精确到微秒,有参数

datetime()的参数如下

参数描述
year指定的年份,MINYEAR <= year <= MAXYEAR
month指定的月份,1 <= month <= 12
day指定的日期,1 <= day <= 月份所对应的日起上限
hour指定的小时,0 <= hour < 24
minute指定的分数,0 <= minute < 60
second指定的秒数,0 <= second < 60
microsecond指定的微秒数,0 <= microsecond < 1000000

举个例子:

调用datetime()函数直接创建一个datetime对象,表示2019年4月15日10:16,32秒7微秒
到此,程序已经有了一个datetime对象,进一步可以利用这个对象的属性显示时间
属性描述属性
someday.min固定返回datetime的最小时间对象,datetime(1,1,1,0,0)someday.min
someday.max固定返回datetime的最大时间对象,datetime(9999,12,31,23,59,59,999999)someday.max
someday.year返回someday包含的年份someday.year
someday.month返回someday包含的月份someday.month
someday.day返回someday包含的日期someday.day
someday.hour返回someday包含的小时someday.hour
someday.minute返回someday包含的分钟someday.minute
someday.second返回someday包含的秒钟someday.second
someday.microsecond返回someday包含的微秒值someday.microsecond

datetime对象有3个常用的时间格式化方法

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

srtftime()方法是时间格式化最有效的方法,几乎可以以任何通用格式输出时间。该方法利用一个格式化字符串,示例如下:

strftime()格式化字符串的数字左侧会自动补零,上述格式也可以与print()的格式化函数一起使用

calendar

允许输出类似Unix cal程序的日历,并提供与日历相关的其他有用功能。默认情况下,这些日历将星期一作为一周的第一天,将星期日作为一周的最后一天。不过我们可以使用setfirstweekday()方法来设置一周的第一天为星期日或者其他工作日,指定的日期以整数形式给出

方法描述
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)打印一年的日历,theyear指定年份,themonth指定月份,w为每个单元格宽度,默认为0,内部已做处理,最小宽度为2,l为每换列l行,默认为0,内部已做处理,至少换行1行,c表示月与月之间的间隔宽度,默认为6,内部已做处理,最小宽度为2,m表示将12个月分为m列
calendar(year, w=2, l=1, c=6, m=3)以多行字符串形式返回一年的日历,w为每个单元格宽度,默认为0,内部已做处理,最小宽度为2,l为每换列l行,默认为0,内部已做处理,至少换行1行,c表示月与月之间的间隔宽度,默认为6,内部已做处理,最小宽度为2,m表示将12个月分为m列

下面为以上用法举例:

random

random库是使用随机数的Python标准库,主要用于生成随机数
用法:import random
random库包括两类函数:

  • 基本随机数函数:seed(), random()
  • 扩展随机数函数:randint(), getrandbits(), uniform(), randrange(), choice(), shuffle()

random库的使用:

函数描述
seed(a=None)初始化给定的随机数种子,默认为当前的系统时间
random()生成一个[0.0,1.0)之间的随机小数

只要给定的种子相同,则产生的随机数也是相同的,对于使用随机数的程序的,可以复现,再现程序运行的过程

扩展随机函数:
函数描述
randint(a,b)生成一个[a,b]之间的整数
randrange(m,n[ ,k])生成一个[m,n)之间以k为步长的随机整数
getrandbits(k)生成一个k比特长的随机整数
uniform(a,b)生成一个[a,b]之间的随机整数
choice(seq)从序列seq中随机选择一个元素
shuffle(seq)将序列seq中元素随机排列返回打乱后的序列

参考文章:Python-标准库calendar的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值