Python基本知识之datetime模块详解
作者:漠然是漠然
前言
time模块用于取得UNIX纪元时间戳,并加以处理。但是,如果以方便的格式显示日期,或对日期进行算数运算,就应该使用datetime模块。
1. datetime数据类型
1) datetime.datetime.now()表示特定时刻
datetime模块有自己的datetime数据类型。datetime值表示一个特定的时刻,如下示例代码:
调用datetime.datetime.now()返回一个datetime对象,表示当前的日期和时间,根据当前计算机的时钟。这个对象包含当前时刻的年、月、日、时、分、秒和微秒。
也可以利用datetime.datetime()函数,向它传入代表年、月、日、时、分、秒的整数,得到特定时刻的datetime对象。这些整数将保存在datetime对象的year、month、day、hour、minute和second属性中。
2)datetime.datetime.fromtimestamp()转换时间戳
UNIX纪元时间戳可以通过datetime.datetime.fromtimestamp(),转换为datetime对象。
datetime对象的日期和时间将根据本地时区转换,如下示例代码:
由此可看出表达式datetime.datetime.now()和datetime.datetime.fromtimestamp(time.time())做的事情相同,都是返回当前时刻的datetime对象。
3)用于比较操作符
datetime对象可以用比较操作符进行比较,弄清楚谁在前面。后面的datetime对象是“更大”的值,如下:
2. timedelta数据类型
1)timedelta数据类型表示一段时间
datetime模块还提供了timedelta数据类型,表示一段时间,而不是一个时刻:
- 用datetime.timedelta()函数创建timedelta对象,此函数接收关键字参数weeks、days、hours、minutes、seconds、milliseconds和microseconds,这些关键字参数都是可选的。没有month和year关键字参数,因为“月”和“年”是可变的时间,依赖于特定月份或年份。
- timedelta对象拥有的总时间以天、秒、微妙来表示,这些数字分别保存在days、seconds和microseconds属性中。
- total_seconds()方法用于timedelta对象,返回timedelta对象表示的秒数。
- 将一个timedelta对象传入str(),将返回格式良好的、人类可读的字符串。
2)进行日期运算
算数运算符可以用于对datetime值进行日期运算。例如,要计算今天之后1000天的日期:
如代码所示,Python将完成日期运算,弄清楚当前日期之后的1000天。这很有用,我们不用记住每个月有多少天、闰年的因素和其他棘手的细节,datetime模块会处理所有这些问题。
利用 + 和 - 运算符,timedelta对象与datetime对象或其他timedelta对象相加或相减。
利用 * 和 / 运算符,timedelta对象可以乘以或除以整数或浮点数。示例如下:
3. 将datetime对象转换为字符串 —— strftime()方法
UNIX纪元时间戳和datetime对象对人类来说都不是很友好可读。利用strftime()方法,可以将datetime对象显示为字符串。( strftime()函数命中的 f 表示格式,format)。
strftime()方法使用的指令类似于Python的字符串格式化。下表列出了完整的strftime()指令:
strftime()指令 | |
strftime指令 | 含义 |
%Y | 带世纪的年份,例如'2014' |
%y | 不带世纪的年份,'00'至'99'(1970至2069) |
%m | 数字表示的月份,'01'至'12' |
%B | 完整的月份,例如'November' |
%b | 简写的月份,例如'Nov' |
%d | 一月中的第几天,'01'至'31' |
%j | 一年中的第几天,'001'至'366' |
%w | 一周中的第几天,'0'(周日)至'6'(周六) |
%A | 完整的周几,例如'Monday' |
%a | 简写的周几,例如'Mon' |
%H | 小时(24小时时钟),'00'至'23' |
%I | 小时(12小时时钟),'01'至'12' |
%M | 分,'00'至'59' |
%S | 秒,'00'至'59' |
%p | 'AM'或'PM' |
%% | 就是'%'字符 |
向strftime()传入一个定制的格式字符串,其中包含格式化指定(以及任何需要的斜线、冒号等),strftime()将返回一个格式化的字符串,表示datetime对象的信息。代码如下:
strftime(format)方法返回一个字符串,用format字符串中的定制格式来表示datetime对象表示的时间。
需要注意的是:strftime() 不是以 datetime.datetime 开始。
4. 将字符串转换成datetime对象 —— strptime()函数
如果有一个字符串的日期信息,如'2021/10/21 16:29:00'或'October 21, 2015', 需要转换为datetime对象,就用 datetime.datetime.strptime()函数。
strptime()函数与strftime()方法相反,但定制的格式字符串使用相同的指令,见上表strftime()指令。必须将格式字符串传入strptime(),这样它就知道如何解析和理解日期字符串。
strptime()函数命中的 p 表示解析,parse。示例代码如下:
strptime()需要传入两个参数,第一个参数是需要转换的字符串,第二个参数是第一个参数对应的定制格式字符串。
datetime.datetime.strptime(time_string, format)函数返回一个datetime对象,它的时刻由time_string指定,利用format字符串参数来解析。
需要注意的是:带有日期信息的字符串必须准确匹配定制的格式字符串,否则Python将抛出ValueError异常。
总结
到此这篇关于Python基本知识之datetime模块详解的文章就介绍到这了,更多相关Python datetime模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!