python中的时间处理模块(二):datetime模块之datetime类详解

1、datetime模块

  datatime模块是在time模块的基础之上做了封装,提供了更多更好用的类供我们使用,常用的有date、time、datetime、timedelta、tzinfo。但是为了更灵活的处理时间,最好是将time模块和datetime模块中的精髓学习到。

  • ① date类:主要用于处理年、月、日;
  • ② time类:主要用于处理时、分、秒;
  • ③ datetime类:date类和time类的综合使用,可以处理年、月、日、时、分、秒;
  • ④ timedelta类:主要用于做时间加减的;
  • ⑤ tzinfo类:时区类;
  • 注意:tzinfo类用的不多,也就不专门讲述了,如果有需要,可以自行学习。

2、datetime类
1)静态方法和属性:可以直接通过类名调用;

datetime.min:datetime类所能表示的最小时间。
datetime.max:datetime类所能表示的最大时间。
datetime.resolution:datetime类表示时间的最小单位,这里是1微秒;

datetime.today():返回一个表示当前本地时间的datetime对象;
datetime.now():返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
datetime.utcnow():返回一个当前utc时间的datetime对象;#格林威治时间

datetime.fromtimestamp(timestamp):根据时间戮创建一个datetime对象,参数tz指定时区信息;
datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;

datetime.combine(date,time):根据datez对象和time对象,创建一个datetime对象;

datetime.strptime(date_string,format):将格式字符串转换为datetime对象;

① 静态属性

from datetime import *

datetime.min
datetime.max
datetime.resolution

结果如下:
在这里插入图片描述
② 静态方法
Ⅰ 返回当前时间 或 UTC时间的datetime对象;

from datetime import *

datetime.today()
datetime.now()
datetime.utcnow()

结果如下:
在这里插入图片描述

Ⅱ 传入时间戳,返回本地时间 或 UTC时间的datetime对象;

from datetime import *
import time

datetime.fromtimestamp(time.time())
datetime.utcfromtimestamp(time.time())

结果如下:
在这里插入图片描述

Ⅲ 合并date类对象,和time类对象,创建一个datetime类对象;

# 注意一个问题:当使用了time()函数,就不要使用import time这句代码;
from datetime import *
date_x = date(2015,11,11)
time_y = time(23,59,59)    
datetime.combine(date_x,time_y)

结果如下:
在这里插入图片描述

Ⅳ 利用任意一个时间字符串,创建一个datetime对象;

from datetime import *
datetime.strptime("2019,12,12","%Y,%m,%d")
datetime.strptime("2019,11,11 23:59:59","%Y,%m,%d %H:%M:%S")

结果如下:
在这里插入图片描述

2)其它常用方法和属性:通过datetime对象才能调用;
"属性"
dt.year、dt.month、dt.day:获取年、月、日;
dt.hour、dt.minute、dt.second、dt.microsecond:获取时、分、秒、微秒;

"方法"
dt.date():获取date对象;
dt.time():获取time对象;
dt.replace():传入指定的year或month或day或hour或minute或second或microsecond,生成一个新日期datetime对象,但不改变原有的datetime对象;
dt.timetuple():返回时间元组struct_time格式的日期;
dt.utctimetuple():返回时间元组struct_time格式的日期; # 这个没什么用 
dt.toordinal():返回111日开始至今的天数; # 了解就行,用处不大
dt.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
dt.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;
dt.isocalendar():返回(year,week,weekday)格式的元组;
dt.isoformat():返回固定格式如'YYYY-MM-DD HH:MM:SS’的字符串;
dt.ctime():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple()))# 了解就行,用处不大
dt.strftime(format):传入任意格式符,可以输出任意格式的日期表示形式。

先构造一个date对象:

from datetime import *
dt = datetime.fromtimestamp(1334567890)
display(dt)

结果如下:
在这里插入图片描述
① dt.year、dt.month、dt.day:获取年、月、日;
 dt.hour、dt.minute、dt.second、dt.microsecond:获取时、分、秒、微秒;

dt = datetime.fromtimestamp(1334567890)
display(dt)

display(dt.year,dt.month,dt.day)
display(dt.hour,dt.minute,dt.second,dt.microsecond)

结果如下:
在这里插入图片描述
② dt.date():获取date对象;
 dt.time():获取time对象;

dt = datetime.fromtimestamp(1334567890)
display(dt)

display(dt.date())
display(dt.time())

结果如下:
在这里插入图片描述
注意:当获取到date对象和time对象后,就可以分别调用date类和time类中的属性和方法了。
③ dt.replace(year=,month=,day=,hour=,minute=,second=,microsecond=):传入指定的year或month或day或hour或minute或second或microsecond,生成一个新日期datetime对象,但不改变原有的datetime对象;

dt = datetime.fromtimestamp(1334567890)
display(dt)

z = dt.replace(year=2015,month=12,hour=22,minute=59)
display(z)

display(d)

结果如下:
在这里插入图片描述
注意:你可以传入year或month或day或hour或minute或second或microsecond中,任意一个或多个值,将其对应的值进行修改后返回。

④ dt.timetuple():返回时间元组struct_time格式的日期(本地时间);
 dt.utctimetuple():返回时间元组struct_time格式的日期(UTC时间);

dt = datetime.fromtimestamp(1334567890)
display(dt)

display(dt.timetuple())
display(dt.utctimetuple())

结果如下:
在这里插入图片描述
⑤ dt.toordinal():返回1年1月1日开始至今的天数。

dt = datetime.fromtimestamp(1334567890)
display(dt)

display(dt.toordinal())

结果如下:
在这里插入图片描述
⑥ dt.weekday()和dt.isoweekday():在中国,主要以dt.isoweekday()的使用为主;

  • dt.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
  • dt.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;
dt = datetime.fromtimestamp(1334567890)
display(dt)

display(dt.weekday())
display(dt.isoweekday())

结果如下:
在这里插入图片描述
⑦ dt.isocalendar():返回(year,week,weekday)格式的元组;

  • year:表示当前日期的年份;
  • week:表示当前日期是一年中的第几周;
  • weekday:表示当前日期是星期几;
dt = datetime.fromtimestamp(1334567890)
display(dt)

display(dt.isocalendar())

结果如下:
在这里插入图片描述
注意:dt.isocalendar()函数的返回值较为特殊,需要特别注意。

⑧ dt.isoformat():返回固定格式如’YYYY-MM-DDTHH:MM:SS’的字符串;

dt = datetime.fromtimestamp(1334567890)
display(dt)

display(dt.isoformat())
display(dt.isoformat().split("T"))

结果如下:
在这里插入图片描述
⑨ dt.ctime():了解就行,此函数用处不大;

dt = datetime.fromtimestamp(1334567890)
display(dt)

display(dt.ctime())

结果如下:
在这里插入图片描述

⑩ dt.strftime(format):传入任意格式符,可以输出任意格式的日期表示形式;
常用的格式符如下所示:
在这里插入图片描述
操作如下:

dt = datetime.fromtimestamp(1334567890)
display(dt)

dt = dt.strftime("%Y{y}%m{m}%d{d} %H{H}%M{M}%S{S}").format(y="年",m="月",d="日",H="时",M="分",S="秒")
display(dt)

结果如下:
在这里插入图片描述
注意:dt.strftime(format)函数很有用,要特别注意。只不过在显示中文这里可能会出现问题,我把这个最难的给你处理了。

发布了50 篇原创文章 · 获赞 64 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_41261833/article/details/103909180