1. 首页 > 产业新闻 > 激光

python内置模块datetime.datetime类详细介绍

Python的datetime模块是一个强大的日期和时间处理库,它提供了多个类来处理日期和时间。主要包括几个功能类datetime.date、datetime.time、datetime.datetime、datetime.timedelta,datetime.timezone等。

总结: datetime类的功能函数众多,大家不妨选择感兴趣的功能函数复制代码执行,看上去会更直观(以下代码均实际执行有效)。

----------动动小手,非常感谢各位的点赞收藏和关注。-----------

使用datetime模块

要使用 datetime模块,直接导入它即可。

import datetime 或者 from datetime import time,datetime,date,timedelta

datetime类

主要用于处理时间,包括年,月,日,小时,分钟,秒,时区等,类似于之前介绍的time模块,其中很多函数也都用到了tiime模块的功能

1. now(tz=None)和utcnow()

是datetiime类的类方法,不需要初始化,可直接调用。

按照一定格式返回当前时间戳或者utc时间戳(UTC时间指0时区时间,我们中国位于东8区,时间比UTC时间早8个小时),格式如2024-09-02 22:10:39.012769。

其中now函数的参数tz表示时区,传入参数datetime.timezone.utc时区,效果跟utcnow函数一样。

测试代码:

from datetime import datetimeprint(f"UTC时间: {datetime.utcnow()}")print(f"UTC时间: {datetime.now(timezone.utc)}")print(f"当前时间: {datetime.now()}")

执行后结果:

UTC时间: 2024-09-02 14:28:03.348786UTC时间: 2024-09-02 14:28:03.348918+00:00当前时间: 2024-09-02 22:28:03.348931

now和utcnow函数返回的是datetime对象,对象包括了如下年,月,日,小时,分钟,秒数等初始化参数,并且这些参数可以作为属性访问。

比如:获取以下时间内容

import datetimenowtime = datetime.datetime.now()print(f"当前 年: {nowtime.year}")print(f"当前 月: {nowtime.month}")print(f"当前 日: {nowtime.day}")print(f"当前 小时: {nowtime.hour}")print(f"当前 分钟: {nowtime.minute}")print(f"当前 秒: {nowtime.second}")print(f"当前 微秒: {nowtime.microsecond}")

执行后结果:

当前 年: 2024当前 月: 9当前 日: 2当前 小时: 22当前 分钟: 49当前 秒: 20当前 微秒: 498617其他函数若是返回的也是datetiime对象,也可访问这些属性。

2 strftime(format)

该函数不是类函数,需要先初始化类,然后在调用。该函数将日期格式化为字符串,format参数类似time模块中的介绍。

%Y:年份,比如2024%m:月份,比如01,02,直到12%d:天数,比如一个月中的第1天,第2天,直到第31天%H:小时,为24小时制,比如从00,01直到23%M:分钟,比如从00,01直到59%S:秒数,比如从00,01直到59%z: UTC时区偏移%a :缩写的星期几,比如Sat代表星期六%L:完整的星期几,比如Staturday代表星期六%b:缩写的月份,比如Aug代表8月份%B :完整的月份,比如August代表8月份%c:按照一定格式展示,比如Sat Aug 31 14:01:17 2024%I:小时,为12进制。比如01,02,直到12%p: AM或PM测试代码:

#将当前时间格式化为如下格式 '%Y%m%d %H%M%S %p',格式大家可以根据需要自己指定。

from datetime import datetimeprint(datetime.now().strftime('%Y%m%d %H%M%S %p'))

结果:20240902 225414 PM

3 strptime(date_string,format)

strptime()函数是类函数,可直接调用。将时间字符串按照格式转为datetime对象,跟函数strftime功能正好相反。

format格式和date_string的格式要一致,否则报错。

比如时间字符串’20240831173340’对应的格式’%Y%m%d%H%M%S’,时间字符串’2024-08-31-17-33-40’对应的格式’%Y-%m-%d-%H-%M-%S’。

测试代码:

import datetimedatestrip_ins = datetime.datetime.strptime('20240902 225414 PM','%Y%m%d %H%M%S %p')print(datestrip_ins)print(type(datestrip_ins))print(datestrip_ins.year)

结果:

2024-09-02 22:54:14

<class 'datetime.datetime'>

2024

4 fromtimestamp(t,tz=None)

是datetime类的类方法,不需要初始化,可直接调用。

参数t表示传入的时间戳(自1970年1月1日以来的秒数),返回的是时间戳对应的时间。上面的now函数调用了该函数。

测试代码:

#打印时间戳对应的时间和UTC时间。

from datetime import datetime, timezoneprint(datetime.fromtimestamp(360000))print(datetime.fromtimestamp(360000,tz=timezone.utc))执行后结果:1970-01-05 12:00:001970-01-05 04:00:00+00:00

5 utcfromtimestamp(t)

是datetime类的类方法,不需要初始化,可直接调用。

参数t表示传入的时间戳(自1970年1月1日以来的秒数),返回的是时间戳对应的UTC时间。上面的utcnow函数调用了该函数,跟fromtimestamp函数传入UTC时区参数时是一样的用法。

测试代码:

#打印时间戳对应的UTC时间。

from datetime import datetimeprint(datetime.utcfromtimestamp(360000))执行后结果:1970-01-05 04:00:00

6 combine(date,time,tzinfo=True)

是datetime类的类方法,不需要初始化,可直接调用。

参数date指datetime.date类实例化的对象,time指datetime.time类实例化的对象,该函数将对应的年/月/日和时/分/秒/微秒合并为一个datetime.datetime对象。

测试代码:

#从datetime导入date和time类,合并两个实例对象为datetime对象

from datetime import datetime,time,dateprint(datetime.combine(date(2024,9,5),time(21,20,57,200)))执行后结果:2024-09-05 21:20:57.000200

7 fromisoforamt(date_string)

是datetime类的类方法,不需要初始化,可直接调用。

参数date_string为固定格式的时间字符串,该函数将字符串转为时间对象。

时间是固定格式,比如‘2024-09-05 21:30:25:64000’

日期格式:必须是上面的格式,否则报错,‘2024-09-05’共10位字符.时间格式:有效的时间格式如下:
# HH:MM len: 5
# HH:MM:SS len: 8
# HH:MM:SS.ffffff len: 15

测试代码:

from datetime import datetimeprint(datetime.fromisoformat('2024-09-05 21:54:34:640'))执行后结果:2024-09-05 21:54:34.640000

8 utcfromtimestamp(t)

是datetime类的类方法,不需要初始化,可直接调用。

参数t表示传入的时间戳(自1970年1月1日以来的秒数),返回的是时间戳对应的UTC时间。上面的utcnow函数调用了该函数,跟fromtimestamp函数传入UTC时区参数时是一样的用法。

测试代码:

#打印时间戳对应的UTC时间。

from datetime import datetimeprint(datetime.utcfromtimestamp(360000))执行后结果:1970-01-05 04:00:00

9 timetuple()

该函数返回datetime日期对象的元组格式,跟之前time模块中说明的元组格式是一样的。

使用该函数,需要先实例化datetime类,然后调用该函数。

测试代码:

#datetime类使用日期时间先初始化

import datetimedate_ins = datetime.datetime(2024,9,5,21,34,25,500)print(date_ins.timetuple())结果:time.struct_time(tm_year=2024, tm_mon=9, tm_mday=5, tm_hour=21, tm_min=34, tm_sec=25, tm_wday=3, tm_yday=249, tm_isdst=-1)

元组可以使用切片访问元素:

print(date_ins.timetuple()[0])print(date_ins.timetuple()[1])print(date_ins.timetuple()[2])#结果202495

10 ctime()

该函数返回的日期为字符串,格式为固定的格式,比如“Sun Sep 1 00:00:00 2024”

测试代码:

#datetime类使用日期时间先初始化

from datetime import datetimedate_ins = datetime(2024,9,5,21,34,25,500)print(date_ins.ctime())结果:Thu Sep 5 21:34:25 2024

11 timestamp()

该函数返回自从1970年1月1日以来的秒数时间戳。

测试代码:

#date类使用年月日先初始化

from datetime import datetimedate_ins = datetime(2024,9,5,21,34,25,500)print(date_ins.timestamp())结果:1725543265.0005

12 date()

该函数返回datetime.date对象,对于date类的使用,参见其他文章介绍:datetime.date介绍

13 time()

该函数返回datetime.time对象,对于time类的使用,参见其他文章介绍:datetime.time介绍

14 isoformat(sep=’T’,timespec=’auto’)

该函数返回的日期对象格式化后的字符串,格式为格式,比如2024-09-05E21:34:25.000500 或者2024-09-05T21:34:25.000

参数sep:日期和时间中间的字符,默认为大写字母T,也可以改为其他字符,但是只能传入一个字符,否则报错。参数timespec:指返回的时间是秒 微秒还是毫秒。 如果传入milliseconds代表返回毫秒;如果默认auto,初始化datetime对象添加了微秒参数,则返回微秒,否则返回秒。

测试代码:

#datetime初始化对象传入微秒,修改sep和timespec的值检查结果

from datetime import datetimedate_ins = datetime(2024,9,5,21,34,25,500)print(date_ins.isoformat())print(date_ins.isoformat(sep='E'))print(date_ins.isoformat(timespec='milliseconds'))结果:2024-09-05T21:34:25.0005002024-09-05E21:34:25.0005002024-09-05T21:34:25.000

#datetime初始化对象不传微秒,timespec保持默认值

date_ins = datetime(2024,9,5,21,34,25)print(date_ins.isoformat())结果:2024-09-05T21:34:25

15 日期的加减运算

在初始化日期的基础上计算n天前某个时间或者n天后某个时间对应的时间。

需要配合使用datetime.timedelta类。

举例:

计算某个日期在50天2小时后对应的时间

from datetime import datetime,timedeltadate_ins = datetime(2024,9,5,21,34,25)print(date_ins + timedelta(days=50,hours=2))结果:2024-10-25 23:34:25计算某个日期在50天前对应的时间再加上2小时20分

from datetime import datetime,timedeltadate_ins = datetime(2024,9,5,21,34,25)print(date_ins + timedelta(days=-50,hours=2,minutes=20))结果:2024-07-17 23:54:25计算两个日期相差的时间

from datetime import datetime,timedeltadate_ins = datetime(2024,9,5,21,34,25)date_ins2 = datetime(2024,9,12,2,34,25)print(date_ins2 - date_ins)

结果:6 days, 5:00:00

datetiime类的时间计算,相比date类只能计算年月日来说,还能计算时分秒,功能更加强大。

16 日期的大小比较

正因为datetime类有__eq__,__lt__等魔法方法,所以具备大小比较的功能。

测试代码:

#两个初始化对象,比较两者时预期结果为date_ins2较大(因为时间更靠后)

date_ins = datetime(2024,9,5,21,34,25)date_ins2 = datetime(2024,9,12,2,34,25)print(date_ins2 > date_ins)#结果True

#两个初始化对象参数一致,比较两者时预期结果为Truedate_ins = datetime(2024,9,5,21,34,25)date_ins2 = datetime(2024,9,5,21,34,25)print(date_ins2 == date_ins)结果:True

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

版权声明:本文转载于今日头条,版权归作者所有,如果侵权,请联系本站编辑删除

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//chanye/jiguang/4954.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666