关于python中datetime模块的总结

作者因数据挖掘比赛,用文章总结Python中时间模块。本文先聚焦datetime模块,介绍其包含的类,如date、datetime、time、timedelta、tzinfo类,阐述各类型的构造函数、方法及运用,还提及格式化表格,后续将总结time模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       由于参加数据挖掘的比赛,在比赛中用到了关于时间的几个模块,用几篇文章来总结下关于时间的一些模块,还有这些模块之间的不同之处。这里先总结下datatime模块。

       首先python中关于时间的模块有多个如time模块,datetime模块,因为之前的数据挖掘比赛首先用到的是datetime模块,那么先来总结下datetime模块,下一篇再来总结time模块。

datetime模块中的首先需要知道的是datetime模块中所包含的类,然后是每一个类之中包含是方法和运用。

一.模块之中的类

 1.date   作用是管理日期的对象,主要的属性有year,month,day(年,月,日)
 2.datetime   作用是管理日期时间的对象,主要的属性有hour, minute, second(小时,分钟,秒)
 3.time   作用是管理时间的模块,主要是得到一个时间对象

 4.timedelta   作用是时间间隔对象,主要是计算两个时间点之间的时间间隔

 5.tzinfo    作用是时区信息对象,作用是得到某一个时区的信息
 6.datetime_CAPI    作用是日期时间对象的C语言接口

二.除了模块中的几个常量

MAXYEAR  作用是计算最大的年限
MINYEAR   作用是计算最小的年限

三.关于模块中类的运用

1.date类

(1) 关于当前日期的函数today()和fromtimestamp()

首先date是datetime中的类,因此该类的构造函数是class datetime.date(year, month, day): 从中可以看出年,月,日,是然后可以从此对象中得到的需要的信息。如下

>>>import datetime
>>>a=datetime.date.today()
>>>print(a)
2018-08-27

today()函数的作用是返回目前的日期。还有一个函数有同样的效果,但是需要time模块中的time()函数的辅助,具体如下

>>>import time
>>>a=time.time()
>>>b=datetime.date.fromtimestamp(a)
>>>print(b)
2018-08-27

这个函数就是fromtimestamp()需要的参数的当前时间的时间戳,time模块中的time()函数返回的就是当前时间的时间戳,如下

>>>import time
>>>a=time.time()
>>>print(a)
1535366826.3582115

还可以自己设置时间,可以认为是自己设置构造函数中的三个参数,如下

>>>a=datetime.date(2017,5,30)
>>>print(a)
2017-05-30

 这样就输出了固定格式的日期。

(2) 关于周末和周几的函数weekday()和isweekday()

weekend()的参数必须是date中一个对象,返回的是当天是一周的第几天,具体用法如下

>>>import datetime
>>>a=datetime.date.today()
>>>t=datetime.date.weekday(a)
>>>print(t)
0

还有就是isoweekday()返回的是当天是周几,注意和上面的weekday相区别

>>>import datetime
>>>a=datetime.date.today()
>>>t=datetime.date.isoweekday(a)
>>>print(t)
1

(3) isocalendar()需要的参数和前面一样也是一个date的对象,函数返回的是一个元组内有三个值分别表示的是当天是年,周(这一年的第几周),天(这一周是第几天),具体如下

>>>import datetime
>>>a=datetime.date.today()
>>>t=datetime.date.isocalendar(a)
>>>print(t)
(2018, 35, 1)

表示当天是2018年的第三十五周的第一天。

(4) strftime()函数,将日期按照自己设置的格式进行输出,在datetime类中也有一样的函数

>>>a=datetime.date.today()
>>>b=a.strftime("%Y-%m-%d %H:%M:%S")
>>>print(b)
2018-08-27 00:00:00

(5)replace(year, month, day)函数来将日期中相应的年,月,天进行替换,如下

>>>import datetime 
>>>a=datetime.date.today()
>>>t=a.replace(day=20)
>>>print(t)
2018-08-20

2.datetime类

datetime类是date和time的结合体,包括date与time的所有信息,date和time类中具有的方法和属性,datetime类都具有。此类的构造函数是datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) ,具体含义和前面的date中的年月日差不多。

函数有today(),now(),fromtimestamp(timestamp[,tz]) ,strptime("时间字符串",format) 

属性有year、month、day、hour、minute、second属性,和构造函数的参数对应

下面是函数的主要的功能

1、today函数  返回一个当前本地时间的datetime.datetime类的对象。
2、now([tz]) 不指定时区,返回一个当前本地时间的datetime.datetime类的对象。指定时区,返回指定时区的时间
3、fromtimestamp(timestamp[,tz]) 给定一个时间戳,返回指定时区的datetime.datetime类的对象。不指定时区,返回本地时区的datetime类对象
4、strptime("时间字符串",format) 将格式时间字符串转换为datetime对象
5、Datetime类—year、month、day、hour、minute、second属性 

 

(1) today()函数

>>>import datetime 
>>>a=datetime.datetime.today()
>>>print(a)
2018-08-27 21:11:26.551240

与前面的date中的today进行比较这里多了时,分,秒

(2) now()

这个和前面的today类似,主要的区别就是now([tz])可以指定时区,相应地会返回对应时区的时间

(3) fromtimestamp(timestamp[,tz])

这个也和前面date中的fromtimestamp相似,需要用到time模块中的time()来得到现在时间的时间戳,然后利用时间戳来计算具体格式化的时间

(4) strptime("时间字符串",format)

这个函数经常会用到,意思是将时间字符串来进行转化成相应的格式,后面的format代表格式,这个可以自己设置。具体如下

>>>from datetime import datetime
>>>a=datetime.strptime("2018-8-27 21:44:55","%Y-%m-%d %H:%M:%S")
>>>print(a)
2018-08-27 21:44:55

主要功能就是将字符串的格式进行转换成datetime对象,然后使用上面的属性,得到year,month,day等信息,如下

>>>from datetime import datetime
>>>a=datetime.strptime("2018-8-27 21:44:55","%Y-%m-%d %H:%M:%S")
>>>b=a.year
>>>c=a.month
>>>d=a.day
>>>print(b)
>>>print(c)
>>>print(d)
2018
8
27

(5)还有几个函数需要datetime对象作为参数,具体的功能之前的date中的函数类似只是这里datetime代表的是日期和时间

date() 作用是用来得到一个date对象,具体含义和前面的date类似,参数是datetime对象

time() 作用和上面相同,参数也是datetime对象

combine() 作用是来得到一个datetime对象,参数是一个date对象和time对象
replace() 作用和上面date中的replace类似,具体就不多说了

timetuple() 作用是得到的一个结构化的年月日时分秒对象,即struct_time对象

weekday() 作用和前面date中的weekday类似,但是这里的参数是datetime对象或者是date对象

isocalendar() 作用是返回一个(年,月,日)元组,因为这个函数表示的是日期所以只能返回年月日,然后可以根据元组选出需要的年,月,日
strftime() 作用是和前面datetime中的strftime一样,只是这里多了时间
1.date()

>>>import datetime 
>>>a=datetime.datetime.today()
>>>b=datetime.datetime.date(a)
>>>print(b)
2018-08-28

2.time()

>>>import datetime 
>>>a=datetime.datetime.today()
>>>b=datetime.datetime.time(a)
>>>print(b)
10:54:09.700457

3.combine()

>>>import datetime 
>>>a=datetime.datetime.today()
>>>b=datetime.datetime.date(a)
>>>c=datetime.datetime.time(a)
>>>d=datetime.datetime.combine(b,c)
>>>print(d)
2018-08-28 11:08:11.340873

4.replace()

>>>import datetime 
>>>a=datetime.datetime.today()
>>>b=datetime.datetime.date(a)
>>>c=datetime.datetime.time(a)
>>>d=datetime.datetime.combine(b,c)
>>>e=d.replace(day=10)
>>>print(e)
2018-08-10 11:11:46.989113

5.timetuple()

>>>import datetime 
>>>a=datetime.datetime.today()
>>>b=datetime.datetime.timetuple(a)
>>>print(b)
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=28, tm_hour=11, tm_min=13, tm_sec=50, tm_wday=1, tm_yday=240, tm_isdst=-1)

6.weekday()

>>>import datetime 
>>>a=datetime.datetime.today()
>>>b=datetime.datetime.weekday(a)
>>>print(b)
1

7.isocalender()

>>>import datetime 
>>>a=datetime.datetime.today()
>>>b=datetime.datetime.isocalendar(a)
>>>print(b)
(2018, 35, 2)

8.strftime()  两种运用方法

>>>import datetime 
>>>a=datetime.datetime.today()
>>>b=a.strftime("%Y-%m-%d %H:%M:%S")
>>>print(b)
2018-08-28 11:23:25

>>>import datetime 
>>>a=datetime.datetime.today()
>>>b=datetime.datetime.strftime(a,"%Y-%m-%d %H:%M:%S")
>>>print(b)
2018-08-28 11:23:25

3.time类

主要就是对一天中的时间进行管理,构造方法是datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None),可以看出里面的参数是时,分,秒,微秒,时区

对象属性有hour,minute,second,microsecond,tzinfo

主要的函数如下

replace() 作用和前面一样主要进行替换,只是这里替换的是hour,minute,second
__format__(format) 作用是对时间进行按照相应的格式进行转化
__str__()转换成相应的字符串
isoformat() 作用是使得输出的时间符合iso标准
strftime() 和前面一样使得时间的格式按照自己需要的进行转换

具体的用法如下

先自己构造一个时间(时,分,秒,微秒)

>>>import datetime 
>>>a=datetime.time(10,20,10,800)
>>>print(a)
10:20:10.000800

1.replace

>>>import datetime 
>>>a=datetime.time(10,20,10,800)
>>>b=a.replace(hour=5)
>>>print(b)
05:20:10.000800

2.__format__(format)

>>>import datetime 
>>>a=datetime.time(10,20,10,800)
>>>b=a.__format__('%H:%M:%S')
>>>print(b)
10:20:10

3.__str__()

>>>import datetime 
>>>a=datetime.time(10,20,10,800)
>>>b=a.__str__()
b
'10:20:10.000800'

4.isoformat()

>>>import datetime 
>>>a=datetime.time(10,20,10,800)
>>>b=a.isoformat()
b
'10:20:10.000800'

5.strftime()

>>>import datetime 
>>>a=datetime.time(10,20,10,800)
>>>a.strftime('%H:%M:%S')
'10:20:10'

4.imedelta 类

此类主要是计算两个时间间隔之间的时间,两个date或datetime对象相减就可以返回一个timedelta对象。

构造函数是class datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]]) 

datetime.timedelta(day=1)代表一天后的时间,即时间差是正的,假如datetime.timedelta(day=-1)那么代表时间差是负的,代码如下

>>>import datetime
>>>a=datetime.timedelta(days=1) 
>>>b=datetime.timedelta(days=-1) 
>>>print(a)
1 day, 0:00:00
-1 day, 0:00:00

一般对这个类的用处是来计算多长时间后或者多长时间之前的某一个时间,比如计算两个小时十分钟后的时间,如下

>>>import datetime
>>>now=datetime.datetime.now() 
>>>a=now+datetime.timedelta(hours=2,minutes=10) 
>>>print(a)
2018-08-28 17:47:33.540764

相应的假如要求两个小时十分钟前的时间只需要将now+datetime.timedelta(hours=2,minutes=10) 中的加号改成减号或者将函数内部的参数改成负号。

total_seconds()来计算此时间间隔经过的秒数,如下

>>>datetime.timedelta(hours=2,minutes=10).total_seconds()
7800.0

即两个小时十分钟经过的秒数是7800秒。

5.tzinfo类

tzinfos 是作为时区的类,一般情况下运用的不多。这里要提一下pytz模块,在python中用pytz来转换模块,具体代码如下

>>>import pytz
>>>dt = datetime.datetime.fromtimestamp(1405938446, pytz.timezone('UTC'))
>>>print(dt.tzinfo)
UTC

四.格式化的表格

符号含义
%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),星期天为星期的开始
%Z当前时区的名称

转载请说明出处

<think>好的,我现在要帮助用户了解Python中的datetime模块的用法。首先,我需要回忆一下datetime模块的主要功能和常用类。datetime模块包括date、timedatetimetimedelta和tzinfo这几个类,分别处理日期、时间、日期时间、时间差和时区信息。 用户可能需要知道如何获取当前日期和时间,所以我要先介绍datetime.now()方法。比如,使用datetime.datetime.now()可以获取当前的日期和时间,并格式化输出。接下来,用户可能想知道如何创建特定的日期或时间对象,比如使用datetime.date(2023, 5, 20)来创建一个日期对象,或者datetime.time(14, 30, 15)来创建时间对象。 然后,日期时间的计算也是一个重要部分。timedelta类可以用来进行时间的加减操作,例如计算三天后的日期或者两小时前的时间。这部分需要给出具体的示例代码,比如如何用datetime.timedelta(days=3)来增加天数。 格式化输出和解析字符串也是常用的功能。strftime方法可以将日期时间对象格式化为字符串,而strptime则可以将字符串解析为日期时间对象。需要举例说明不同的格式符,比如%Y代表年份,%m代表月份,%d代表日期,%H、%M、%S代表时分秒等。 另外,用户可能对时间戳转换感兴趣,比如如何将时间戳转换为datetime对象,或者反过来。这里可以用fromtimestamp方法和timestamp()方法来实现,需要给出代码示例,比如使用datetime.datetime.fromtimestamp(1620000000)来转换。 还需要考虑引用的问题。用户提供的引用中有四个来源,其中引用[2]和引用[3]提到了datetime模块的基本介绍和常用方法,引用[4]提到了fromtimestamp的使用。在回答中,我需要自然地引用这些内容,例如在讲解fromtimestamp时引用[4],在介绍模块时引用[2]和[3]。 用户的问题可能还涉及常见的使用场景,比如日志记录、时间计算、数据过滤等。这部分可以通过示例说明如何在实际应用中运用datetime模块,比如计算两个日期之间的天数差,或者筛选特定时间范围内的数据。 最后,生成相关问题时,要覆盖模块的基本使用、常见操作、格式化、时间差计算以及实际应用等方向,确保问题能够引导用户进一步深入学习。 总结一下,回答的结构应该包括模块简介、常用类和方法、日期时间创建、计算、格式化、时间戳转换以及示例代码,同时合理插入引用标记。然后生成的相关问题要围绕这些知识点展开,帮助用户巩固理解。</think>### Python datetime模块使用详解 Pythondatetime模块提供了丰富的日期时间处理功能,包含`date`、`time`、`datetime`、`timedelta`和`tzinfo`五个核心类。以下是具体使用方法及示例: --- #### 一、获取当前时间 使用`datetime.now()`获取当前完整时间信息: ```python from datetime import datetime now = datetime.now() print(now) # 输出:2023-10-10 15:30:45.123456 ``` --- #### 二、创建指定日期时间 1. **日期对象**:仅包含年月日 ```python from datetime import date d = date(2023, 5, 20) print(d) # 输出:2023-05-20 ``` 2. **时间对象**:仅包含时分秒微秒 ```python from datetime import time t = time(14, 30, 15) print(t) # 输出:14:30:15 ``` 3. **完整日期时间对象** ```python dt = datetime(2023, 10, 10, 9, 0) print(dt) # 输出:2023-10-10 09:00:00 ``` --- #### 三、时间计算与差值 使用`timedelta`进行时间加减: ```python from datetime import timedelta # 三天后的时间 new_time = datetime.now() + timedelta(days=3) # 两小时前的时间 past_time = datetime.now() - timedelta(hours=2) ``` --- #### 四、时间格式化与解析 1. **格式化输出**:`strftime()` ```python formatted = datetime.now().strftime("%Y-%m-%d %H:%M:%S") print(formatted) # 输出:2023-10-10 15:30:45 ``` 2. **字符串转时间**:`strptime()` ```python date_str = "2023-08-01" parsed_date = datetime.strptime(date_str, "%Y-%m-%d") ``` --- #### 五、时间戳转换 1. **时间戳转datetime对象**: ```python timestamp = 1620000000 dt = datetime.fromtimestamp(timestamp) # 引用[4] ``` 2. **datetime转时间戳**: ```python ts = datetime.now().timestamp() ``` --- #### 六、实际应用示例 **场景1:计算日期差** ```python date1 = date(2023, 5, 20) date2 = date(2023, 10, 10) delta = date2 - date1 print(delta.days) # 输出:143天 ``` **场景2:过滤特定时间段数据** ```python logs = [ {"time": datetime(2023,10,10,9,0), "msg": "start"}, {"time": datetime(2023,10,10,10,30), "msg": "error"} ] filtered = [log for log in logs if log["time"].hour == 10] ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值