【Python学习笔记】(七)日期和时间:time模块,datetime模块,calendar模块;dateutil库(parser模块、rrule模块)

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

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不同,先码住,以后学习。

Linux下clock计时函数学习

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)
%H24小时制小时数(0-23)
%I12小时制小时数(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对象。

关于tzinfo——时区信息对象的抽象基类:python时区设置——pytz模块
这篇关于模块函数的归纳表格很清晰,可做参考:
python时间(time)和日期(datetime)处理模块

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

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

Python3.x:日期库dateutil简介详解

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值