当前位置: 首页 > 工具软件 > rrule > 使用案例 >

python 日历模块_[Python学习笔记](VII)日期和时间:时间模块、日期时间模块、日历模块;dateutil库(解析器模块、rrule模块),七,time,datetime,calenda...

侯池暝
2023-12-01

时间戳:标识数据已存在的某一时刻的字符序列。

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模块

用于计算并生成一些重复的时间规划。

 类似资料: