找回密码
 会员注册
查看: 38|回复: 0

Pythondatetime模块精讲:时间旅行者的日志,精准操控日期与时间

[复制链接]

4

主题

0

回帖

13

积分

新手上路

积分
13
发表于 2024-9-4 19:14:25 | 显示全部楼层 |阅读模式
文章目录前言一、datetime模块简介二、常用类和方法三、date类四、time类五、datetime类六、timedelta类七、常用的函数和属性八、代码及其演示前言Python的datetime模块提供了日期和时间的类,用于处理日期和时间的算术运算。这个模块包括date、time、datetime和timedelta等类,以及tzinfo接口和timezone类。date类用于表示年、月、日,而time类表示时间。datetime类结合了日期和时间,提供了一个单一的日期时间对象。timedelta类用于表示两个日期或时间之间的差异。此外,tzinfo接口允许用户定义时区信息,而timezone类提供了时区的实现。datetime模块广泛用于需要日期和时间计算的应用程序,如日志记录、调度和数据时间戳。它的强大功能和灵活性使其成为Python标准库中不可或缺的一部分。一、datetime模块简介datetime模块是Python标准库中处理日期和时间的常用模块之一。它提供了日期和时间的表示、比较和运算方法,以及常见的格式化和解析函数。二、常用类和方法#datetime模块提供了许多有用的类和方法,下面是其中一些常用的:#导入datetime模块importdatetime1234类或方法描述datetime.date表示一个具体的日期,包括年份、月份和日数datetime.time表示一个具体的时间,包括小时、分钟、秒和微秒datetime.datetime表示一个具体的日期和时间,包括日期和时间的所有信息datetime.timedelta表示两个日期或时间之间的差距datetime.datetime.today()/datetime.datetime.now()返回表示当前日期和时间的对象datetime.datetime.fromtimestamp(ts)将时间戳转换为datetime对象datetime.datetime.strftime(format)/datetime.datetime.strptime(date_string,format)将datetime对象格式化为字符串,或将字符串解析为datetime对象时间格式化符号格式描述注释%Y年2021%y年21%m月%d日%H时24小时制(晚上九点:21:00)%I时12小时制(晚上九点:9:00)%M分%S秒%p上午AM下午PM三、date类#date类表示一个具体的日期,其中包括以下属性:1属性描述year年份month月份day日数weekday()返回星期几(0表示星期一,6表示星期日)isoweekday()返回ISO规定的星期几(1表示星期一,7表示星期日)isocalendar()返回一个元组,其中包含年份、周数和星期几strftime(format)将date对象格式化为字符串#创建一个date对象:d=datetime.date(year,month,day)12d=datetime.date(2023,5,11)1year属性表示日期对象的年份month属性表示日期对象的月份day属性表示日期对象的日数isoweekday()方法返回ISO规定的星期几,其中1表示星期一,7表示星期日。weekday()方法返回星期几,其中0表示星期一,6表示星期日。isocalendar()方法返回一个元组,其中包含年份、周数和星期几。importdatetimed=datetime.date(2023,5,11)print(d.year)#2023print(d.month)#5print(d.day)#11print(d.isoweekday())#4print(d.weekday())#3print(d.isocalendar())#(2023,19,4)123456789strftime()方法将date对象格式化为字符串。format参数是一个格式化字符串,其中包含特定的代码,代表日期和时间的不同部分。importdatetimed=datetime.date(2023,5,11)s=d.strftime('%Y-%m-%d')print(s)#2023-05-1112345四、time类#time类表示一个具体的时间,其中包括以下属性:1属性描述hour小时minute分钟second秒microsecond微秒strftime(format)将time对象格式化为字符串#创建一个time对象:t=datetime.time(hour=0,minute=0,second=0,microsecond=0)12t=datetime.time(10,0)1hour属性表示时间对象的小时数minute属性表示时间对象的分钟数second属性表示时间对象的秒数microsecond属性表示时间对象的微秒数importdatetimet=datetime.time(10,30,15,500000)print(t.hour)#10print(t.minute)#30print(t.second)#15print(t.microsecond)#5000001234567#strftime()方法将time对象格式化为字符串。format参数是一个格式化字符串,其中包含特定的代码,代表日期和时间的不同部分。importdatetimet=datetime.time(10,30,15)s=t.strftime('%H:%M:%S')print(s)#10:30:151234567五、datetime类#datetime类表示一个具体的日期和时间,其中包括以下属性:1属性描述year年份month月份day日数hour小时minute分钟second秒microsecond微秒timestamp()返回时间戳(自1970年以来的秒数)weekday()返回星期几(0表示星期一,6表示星期日)isoweekday()返回ISO规定的星期几(1表示星期一,7表示星期日)isocalendar()返回一个元组,其中包含年份、周数和星期几strftime(format)将datetime对象格式化为字符串#v创建datetime对象dt=datetime.datetime(year,month,day[,hour[,minute[,second[,microsecond]]]])12dt=datetime.datetime(2023,5,11,10,0)1year属性表示日期时间对象的年份month属性表示日期时间对象的月份day属性表示日期时间对象的日数hour属性表示日期时间对象的小时数minute属性表示日期时间对象的分钟数second属性表示日期时间对象的秒数microsecond属性表示日期时间对象的微秒数importdatetimedt=datetime.datetime(2023,5,11,10,30,15,500000)print(dt.year)#2023print(dt.month)#5print(dt.day)#11print(dt.hour)#10print(dt.minute)#30print(dt.second)#15print(dt.microsecond)#50000012345678910timestamp()方法返回自1970年1月1日以来的秒数weekday()方法返回星期几,其中0表示星期一,6表示星期日。isoweekday()方法返回ISO规定的星期几,其中1表示星期一,7表示星期日isocalendar()方法返回一个元组,其中包含年份、周数和星期几。importdatetimedt=datetime.datetime(2023,5,11,10,30,15)print(dt.timestamp())#1686790215.0print(dt.weekday())#3print(dt.isoweekday())#4print(dt.isocalendar())#(2023,19,4)12345678910strftime()方法将datetime对象格式化为字符串。format参数是一个格式化字符串,其中包含特定的代码,代表日期和时间的不同部分。importdatetimedt=datetime.datetime(2023,5,11,10,30,15)s=dt.strftime('%Y-%m-%d%H:%M:%S')print(s)#2023-05-1110:30:1512345strptime()方法是将字符串转换为datetime对象的方法。它根据特定的格式化代码将字符串解析为datetime对象。importdatetimes='2023-05-1110:30:15'dt=datetime.datetime.strptime(s,'%Y-%m-%d%H:%M:%S')print(dt)#2023-05-1110:30:1512345六、timedelta类#timedelta类表示两个日期或时间之间的差距,它支持以下属性:1属性描述days天数seconds秒数microseconds微秒数total_seconds()返回总秒数#创建一个timedelta对象:delta=datetime.timedelta([days[,seconds[,microseconds[,milliseconds[,minutes[,hours[,weeks]]]]]]])12delta=datetime.timedelta(days=10)1timedelta对象的days属性表示天数importdatetimed1=datetime.date(2023,5,11)d2=datetime.date(2023,5,1)delta=d1-d2print(delta.days)#10123456timedelta对象的seconds属性表示秒数importdatetimet1=datetime.datetime(2023,5,11,10,30,15)t2=datetime.datetime(2023,5,11,10,0,0)delta=t1-t2print(delta.seconds)#1815123456#timedelta对象的microseconds属性表示微秒数importdatetimet1=datetime.datetime(2023,5,11,10,30,15,500000)t2=datetime.datetime(2023,5,11,10,30,15)delta=t1-t2print(delta.microseconds)#50000012345678#total_seconds()方法返回总秒数importdatetimet1=datetime.datetime(2023,5,11,10,30,15)t2=datetime.datetime(2023,5,8,10,0,0)delta=t1-t2print(delta)#3days,0:30:15print(delta.seconds)#1815print(delta.total_seconds())#261015.012345678910七、常用的函数和属性#datetime模块还提供了一些其他有用的函数和属性,下面是其中一些常用的:1函数或属性描述datetime.datetime.today()/datetime.datetime.now()返回表示当前日期和时间的对象datetime.datetime.fromtimestamp(ts)将时间戳转换为datetime对象datetime.datetime.astimezone(tz=None)返回带有时区信息的datetime对象datetime.datetime.utcoffset()返回一个datetime对象相对于UTC的偏移量datetime.date.today()返回表示当前日期的date对象datetime.datetime.combine(date,time)将一个date对象和一个time对象组合成一个datetime对象#datetime.datetime.today()/datetime.datetime.now()#这两个方法都返回表示当前日期和时间的datetime对象。importdatetimedt_now=datetime.datetime.now()dt_today=datetime.datetime.today()print(dt_now)print(dt_today)#2023-05-1115:30:15.123456#2023-05-1115:30:15.123456"""它们的区别在于,today()方法不接受任何参数,而now()方法可以接受一个可选参数,用于指定时区。如果不指定,则默认使用系统本地时区。"""1234567891011121314151617fromtimestamp()方法将时间戳转换为datetime对象。#datetime.datetime.fromtimestamp(ts)importdatetime#ts1=datetime.datetime.now()#ts=datetime.datetime.now().timestamp()#print(ts1)#print(ts)ts=1686790215.0#时间戳dt=datetime.datetime.fromtimestamp(ts)print(dt)#2023-05-1202:30:1512345678910111213astimezone()方法返回带有时区信息的datetime对象,如果tz参数未提供,则默认使用系统本地时区。#datetime.datetime.astimezone(tz=None)importdatetimedt=datetime.datetime(2023,5,11,10,30,15)#将时区从本地修改为UTC+8tzinfo=datetime.timezone(datetime.timedelta(hours=8))dt2=dt.astimezone(tz=tzinfo)print(dt2)#2023-05-1118:30:15+08:001234567891011utcoffset()方法是datetime模块中tzinfo类的一个方法,用于返回一个timedelta对象,表示当前时区相对于协调世界时(UTC)的偏移量。这个方法通常在处理时区相关的日期和时间时使用。#datetime.datetime.utcoffset()#utcoffset()方法返回一个datetime对象相对于UTC的偏移量。importdatetimedt=datetime.datetime(2023,5,11,10,30,15).astimezone()print(dt.utcoffset())#8:00:00123456date.today()方法用于获取当前日期。这个方法不需要任何参数,并返回一个date对象,表示当前的年、月、日。#datetime.date.today()#today()方法返回表示当前日期的date对象。importdatetimed_today=datetime.date.today()print(d_today)#2023-05-111234567combine()方法将一个date对象和一个time对象组合成一个datetime对象。#datetime.datetime.combine(date,time)importdatetimed=datetime.date(2023,5,11)t=datetime.time(10,30,15)dt=datetime.datetime.combine(d,t)print(dt)#2023-05-1110:30:15123456789八、代码及其演示#计算两个日期之间的天数差距importdatetimed1=datetime.date(2023,5,1)d2=datetime.date(2023,5,11)delta=d2-d1print(delta.days)#1012345678#获取当前时间并格式化输出importdatetimenow=datetime.datetime.now()s=now.strftime('%Y-%m-%d%H:%M:%S')print(s)#2023-05-1110:00:001234567#将一个字符串解析为datetime对象importdatetimes='2023-05-1110:00:00'dt=datetime.datetime.strptime(s,'%Y-%m-%d%H:%M:%S')print(dt)#2023-05-1110:00:001234567#datetime模块提供了一组强大的工具来处理日期和时间相关的问题,包括日期、时间、日期时间、时间差和格式化等。学会了使用这些工具,我们就可以方便地进行日期和时间相关的计算、比较和格式化,从而使程序更具可读性和可维护性。1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-12 18:22 , Processed in 1.345937 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表