time标准库
time包
time包基于C语言的库函数(library functions)。Python的解释器通常是用C编写的,Python的一些函数也会直接调用C语言的库函数。
import time
print(time.time())
print(time.clock())
time.sleep()可以将程序置于休眠状态,直到某时间间隔之后再唤醒程序,让程序继续运行。
import time
time.sleep(10) # sleep for 10 seconds
time包还定义了struct_time对象。该对象实际上是将挂钟时间转换为年、月、日、时、分、秒……等日期信息,存储在该对象的各个属性中(tm_year, tm_mon, tm_mday…)。下面方法可以将挂钟时间转换为struct_time对象:
st = time.gmtime() # 返回struct_time格式的UTC时间
st = time.localtime() # 返回struct_time格式的当地时间, 当地时区根据系统环境决定。
s = time.mktime(st) # 将struct_time格式转换成wall clock time
time常用函数清单
asctime(p_tuple = None) | 时间元组–>字符串 None:当前时间的元组–>字符串 |
---|---|
ctime(seconds=None) | 时间戳–>字符串 None:当前时间戳–>字符串 |
gmtime(seconds=None) | 时间戳–>国际时间元组 None:当前时间戳–>国际时间元组 |
localtime(seconds=None) | 时间戳–>地方时间元组 None:当前时间戳–>地方时间元组 |
mktime(p_tuple) | 时间元组–>时间戳 |
sleep(seconds) | 睡眠给定的秒数 |
strftime(format,p_tuple=None) | 将时间元组格式化成字符串,p_tuple=None: 将当前时间格式化成字符串 |
strptime(string,format) | 按照格式化形式将字符串转换成时间元组 |
time() | 返回当前的时间戳 |
时间戳:从1970年到现在的秒数
时间元组格式化成字符串的格式控制符
格式 | 含义 |
---|---|
%a | 本地(locale)简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化月份名称 |
%B | 本地完整月份名称 |
%c | 本地相应的日期和时间表示 |
%d | 一个月中的第几天(01 - 31) |
%H | 一天中的第几个小时(24小时制,00 - 23) |
%I | 第几个小时(12小时制,01 - 12) |
%j | 一年中的第几天(001 - 366) |
%m | 月份(01 - 12) |
%M | 分钟数(00 - 59) |
%p | 本地am或者pm的相应符 |
%S | 秒(01 - 61) |
%U | 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。 |
%w | 一个星期中的第几天(0 - 6,0是星期天) |
%W | 和%U基本相同,不同的是%W以星期一为一个星期的开始。 |
%x | 本地相应日期 |
%X | 本地相应时间 |
%y | 去掉世纪的年份(00 - 99) |
%Y | 完整的年份 |
%Z | 时区的名字(如果不存在为空字符) |
%% | ‘%’字符 |
datetime
datetime包
1) 简介
datetime包是基于time包的一个高级包, 为我们提供了多一层的便利。
datetime可以理解为date和time两个组成部分。date是指年月日构成的日期(相当于日历),time是指时分秒微秒构成的一天24小时中的具体时间(相当于手表)。你可以将这两个分开管理(datetime.date类,datetime.time类),也可以将两者合在一起(datetime.datetime类)。
import datetime
t = datetime.datetime(2019,4,2,21,30)
print(t)
2) 运算
datetime包还定义了时间间隔对象(timedelta)。一个时间点(datetime)加上一个时间间隔(timedelta)可以得到一个新的时间点(datetime)。
import datetime
t = datetime.datetime(2019,4,2,21,30)
t_next = datetime.datetime(2012,4,5,23,30)
delta1 = datetime.timedelta(seconds = 600)
delta2 = datetime.timedelta(weeks = 3)
print(t + delta1)
print(t + delta2)
print(t_next - t)
3) datetime对象与字符串转换
一个字符串转换成为datetime对象
from datetime import datetime
format = "output-%Y-%m-%d-%H%M%S.txt"
str = "output-2019-4-2-030000.txt"
t = datetime.strptime(str, format)
调用datetime对象的strftime()方法,来将datetime对象转换为特定格式的字符串
print(t_next.strftime(format))
datetime类的常用属性
someday.min | 固定返回datetime的最小时间对象,datetime(1,1,1,0,0) |
---|---|
someday.max | 固定返回datetime的最大时间对象,datetime(9999,12,31,23,59,999999) |
someday.year | 返回someday包含的年份 |
someday.month | 返回someday包含的月份 |
someday.day | 返回someday包含的日期 |
someday.hour | 返回someday包含的小时 |
someday.minute | 返回someday包含的分钟 |
someday.second | 返回someday包含的秒钟 |
someday.microsecond | 返回someday包含的微秒值 |
datetime类常用的时间格式化方法
someday.isoformat() | 采用ISO 8601标准显示时间 |
---|---|
someday.isoweekday() | 根据日期计算星期后返回1->7,对应星期一到星期日 |
someday.strftime(format) | 根据格式化字符串format进行格式显示的方法 |
calendar
函数 | 描述 |
---|---|
calendar.calendar(year,w=2,l=1,c=6) | 返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。 每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数。 |
calendar.firstweekday( ) | 返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一。 |
calendar.isleap(year) | 是闰年返回True,否则为false。 |
calendar.leapdays(y1,y2) | 返回在Y1,Y2两年之间的闰年总数。 |
calendar.month(year,month,w=2,l=1) | 返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。 |
calendar.monthcalendar(year,month) | 返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。 |
calendar.monthrange(year,month) | 返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。 |
calendar.prcal(year,w=2,l=1,c=6) | 相当于 print calendar.calendar(year,w,l,c). |
calendar.prmonth(year,month,w=2,l=1) | 相当于 print calendar.calendar(year,w,l,c)。 |
calendar.setfirstweekday(weekday) | 设置每周的起始日期码。0(星期一)到6(星期日)。 |
calendar.timegm(tupletime) | 和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间辍(1970纪元后经过的浮点秒数)。 |
calendar.weekday(year,month,day) | 返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。 |
random
参考链接:https://www.cnblogs.com/yd1227/archive/2011/03/18/1988015.html
Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。
random.random
random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0
random.uniform
random.uniform的函数原型为:random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成的随机数n: a <= n <= b。如果 a <b, 则 b <= n <= a。
print (random.uniform(10, 20))
print (random.uniform(20, 10))
#18.7356606526
#12.5798298022
random.randint
random.randint()的函数原型为:random.randint(a, b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b
print (random.randint(12, 20)) #生成的随机数n: 12 <= n <= 20
print (random.randint(20, 20)) #结果永远是20
#print (random.randint(20, 10)) #该语句是错误的。下限必须小于上限。
random.randrange
random.randrange的函数原型为:random.randrange([start], stop[, step]),从指定范围内,按指定基数递增的集合中 获取一个随机数。如:random.randrange(10, 100, 2),结果相当于从[10, 12, 14, 16, … 96, 98]序列中获取一个随机数。random.randrange(10, 100, 2)在结果上与 random.choice(range(10, 100, 2) 等效。
random.choice
random.choice从序列中获取一个随机元素。
random.shuffle
random.shuffle的函数原型为:random.shuffle(x[, random]),用于将一个列表中的元素打乱。如:
p = [“python”,"hello","world"]
random.shuffle(p)
print (p)
#['asdh', 'world', 'hello', 'python']
random.sample
random.sample的函数原型为:random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
slice = random.sample(list, 5) #从list中随机获取5个元素,作为一个片断返回
print (slice)
print (list) #原有序列并没有改变。
#[8, 7, 5, 6, 1]
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]