时间戳:标识数据已存在的某一时刻的字符序列。
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 | 当前时区的名称 |
模块包含了日期和时间的所有信息。支持年份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对象。
关于tzinfo——时区信息对象的抽象基类:python时区设置——pytz模块
这篇关于模块函数的归纳表格很清晰,可做参考:
python时间(time)和日期(datetime)处理模块
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
为Python内置的datetime模块提供了强大的扩展。需要手动安装。
可以计算日期差值、两个date/datetime对象的差值、解析几乎任何字符串格式的日期、根据系统信息自动分析时区信息等。
把大多数一直格式的时间字符串全部转化成datetime类型,可以模糊输入。
用于计算并生成一些重复的时间规划。