时间戳:标识数据已存在的某一时刻的字符序列。
time模块
import time
print("当前的时间戳是:%f"%time.time())#返回当前时间的时间戳(浮点数)
print("当前时间",time.localtime())#将时间戳格式化为本地时间,返回struct_time对象
print("0时间戳对应的时间",time.localtime(0))#接收时间戳,默认使用当前时间戳
print("UTC时区时间",time.gmtime())#转换为标准时间的struct_time,可选参数
t=(2020,6,22,17,30,20,1,1,0)#时间元组(年,月,日,小时,分钟,秒,星期,第几天,夏时令)
secs=time.mktime(t)#接收一个struct_time对象,返回秒数来表示的时间浮点数
print("1970-1-1之后的秒数",secs,time.mktime(time.localtime(secs)))
print("该日期为",time.asctime(t))#返回一个24个字符的字符串表示日期,可接受时间元组或者struct_time对象
print("当前日期为",time.asctime(time.localtime()),time.asctime(time.gmtime()))
print("时间戳对应的时间",time.ctime())#把一个时间戳转换为time.asctime()形式,参数可选
gmtime函数
获取的是标准时间(
UTC时间
),不受时区的影响;
localtime函数
获取的是服务器时间,会受时区的影响,如果时区设为“Asia/Shanghai”,那么他会比标准时间快8个小时;
默认参数值为时间戳time.time(),可选参数标识从1970-1-1以来的秒数。
import time
print("Start",time.ctime())
time.sleep(3)#推迟调用线程的运行,参数指秒数
print("End",time.ctime())
t0=time.clock()#返回程序运行时间
time.sleep(5)
print(time.clock()-t0)#返回自第一次调用clock函数到现在的时间间隔
clock函数
是统计cpu时间的工具,这在统计某一程序或函数的执行速度最为合适。两次调用time.clock()函数的差值即为程序运行的cpu时间。
linux和windows不同,先码住,以后学习。
import time
t=(2020,6,22,17,30,20,1,1,0)
print(time.strftime("%b %d %Y %H:%M:%S",t))#接受时间元组,返回可读字符串
#格式参数format:简化月份 日0-31 四位年份 24小时:分钟数:秒
print(time.strptime("Jun 22 2020 17:30:20","%b %d %Y %H:%M:%S"))#字符串解析为时间元组
strptime和timestamp是能够互相转换的函数。格式由参数format决定。
Python中的时间日期格式化符号
%y
两位数的年份表示(00-99)
%Y
四位数的年份表示(000-9999)
%m
月份(01-12)
%d
月内中的一天(0-31)
%H
24小时制小时数(0-23)
%I
12小时制小时数(01-12)
%M
分钟数(00=59)
%S
秒(00-59)
%a
本地简化星期名称
%A
本地完整星期名称
%b
本地简化的月份名称
%B
本地完整的月份名称
%c
本地相应的日期表示和时间表示
%j
年内的一天(001-366)
%p
本地A.M.或P.M.的等价符
%U
一年中的星期数(00-53)星期天为星期的开始
%w
星期(0-6),星期天为星期的开始
%W
一年中的星期数(00-53)星期一为星期的开始
%x
本地相应的日期表示
%X
本地相应的时间表示
%Z
当前时区的名称
datetime模块
模块包含了日期和时间的所有信息。支持年份1(
datetime.MINYEAR
)~9999(
datetime.MAXYEAR
)的日期。
date对象
:表示日历中的一个日期(年-月-日),构造函数需要传入三个参数。
import datetime
dt=datetime.date(2020,5,20)#d构造一个ate对象表示一个日期
print(dt)#2020-06-23
print(dt.isoformat())#返回日期的ISO格式:"%04d-%02d-%02d"的字符串
td=datetime.date.today()#返回当天日期
print(td)
print(td.weekday())#返回当前星期数,0(星期一)~6
print(td.isoweekday())#返回当前星期数,1(星期一)~7
print(td.strftime("%y-%b-%d"))#格式化输出日期,20-Jun-23
time对象
:表示一天中的本地时间(时:分:秒)00:00:00(
datetime.time.min
)~23:59:59.999999(
datetime.time.max
)。并且可以通过
tzinfo对象
进行调整。构造函数接收时、分、秒、微秒、时区和信息等参数,并且所有参数可选,默认0/None。常量
time.resolution
代表time对象的最小单位,值是1微秒(timedealta类型)
import datetime
t1=datetime.time()#默认0/None
t2=datetime.time(hour=8,second=7,microsecond=123)
print(t1,t2)#00:00:00,08:00:07.000123
print(t2.isoformat())#返回时间为ISO格式,即"HH:MM:SS"
print(datetime.time.max)
print(t2.strftime("%p %I:%M:%S:%f"))#格式化输出,AM 08:00:07:000123
datetime对象
:包括date和time的所有信息,参数年月日必须,其余可选。
import datetime
import time
dt=datetime.datetime(year=2020,month=5,day=20,hour=13,minute=14)
print(dt)#2020-05-20 13:14:00
print(datetime.datetime.today())#返回当前本地时间对象
print(datetime.datetime.now())#返回当前本地时间对象,可选参数tzinfo
print(datetime.datetime.utcnow())#返回当前UTC时间对象
dt=datetime.datetime.fromtimestamp(time.time()-86400)#根据时间戳创建一个datetime对象,可选参数tzinfo
print(dt)
print(dt.date())#获取date对象
print(dt.time())#获取time对象
dt2=datetime.datetime.combine(dt.date(),dt.time())#根据date和time创建datetime
print(dt2.strftime("%y-%m-%d %a %I:%M:%S"))#格式化输出日期时间
返回一个表示当前本地时间的datetime对象的两种方法:
today方法
对应的tzinfo是None。
now方法
如果提供了参数tzinfo,则获取tzinfo参数所指的本地时间,如果不传递tzinfo则和today作用相同。
timedelta对象
:表示两个日期或者时间的差,属性包含:日期、秒微秒毫秒、分钟、小时和星期。所有参数可选,默认0。
import datetime
dt=datetime.datetime(year=2020,month=5,day=20,hour=13,minute=14)
dt2=dt+datetime.timedelta(weeks=-2)
print(dt,dt2)#2020-05-20 13:14:00,2020-5-14 13:14:00
tzinfo对象
:tzinfo是一个时区对象的抽象类,datetime和time对象使用它来提供可自定义的时间调整概念(eg:时区、夏时令)。tzinfo类不能直接使用,但是可以使用datetime.timezone生成。
import datetime
utc1=datetime.datetime.now(datetime.timezone.utc)#UTC时区的tzinfo实例
utc2=datetime.datetime.utcnow()
print(utc1,utc2)#2020-06-23 05:25:03.548302+00:00 2020-06-23 05:25:03.548302
china_timezone=datetime.timezone(datetime.timedelta(hours=8))#构造datetime.timezone对象
china_time=datetime.datetime.now(china_timezone)
print(china_time)#2020-06-23 13:25:03.548302+08:00
datetime.timezone
是tzinfo的子类,可以实现想要的时区信息。构造datetime.timezone对象时只要传入和UTC时间间隔的timedelta对象。
calendar模块
import calendar
print(calendar.isleap(2020))#判断是否为闰年,True/False
print(calendar.leapdays(2000,2020))#返回两个年份间闰年的总数
print(calendar.month(2020,5,w=3,l=1))#返回某年某月的日历。列间距w(0),行间距l(0)(字符)
print(calendar.monthcalendar(2020,6))#返回某年某月一个整数的单层嵌套列表
print(calendar.monthrange(2020,6))#返回两个整数组成的元组,(第一天星期几,该月总天数)
print(calendar.weekday(2020,6,23))#返回给定日期的星期码,0(周一)~6
print(calendar.calendar(2020))#返回一个年历,三月一行,行间距参数c默认6,宽距w默认2,行距l默认1
dateutil库
为Python内置的datetime模块提供了强大的扩展。需要手动安装。
可以计算日期差值、两个date/datetime对象的差值、解析几乎任何字符串格式的日期、根据系统信息自动分析时区信息等。
parser模块
把大多数一直格式的时间字符串全部转化成datetime类型,可以模糊输入。
rrule模块
用于计算并生成一些重复的时间规划。