Python中的datetime模块

time模块用于取得UNIX纪元时间戳,并加以处理。但是,如果以方便的格式显示日期,或对日期进行算数运算,就应该使用datetime模块。

目录

[1. datetime数据类型](#1. datetime数据类型)

[1) datetime.datetime.now()表示特定时刻](#1) datetime.datetime.now()表示特定时刻)

2)datetime.datetime.fromtimestamp()转换时间戳

3)用于比较操作符

[2. timedelta数据类型](#2. timedelta数据类型)

1)timedelta数据类型表示一段时间

[3. 将datetime对象转换为字符串 ------ strftime()方法](#3. 将datetime对象转换为字符串 —— strftime()方法)

[4. 将字符串转换成datetime对象 ------ strptime()函数](#4. 将字符串转换成datetime对象 —— strptime()函数)


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异常。

相关推荐
belldeep2 小时前
python:reportlab 将多个图片合并成一个PDF文件
python·pdf·reportlab
FreakStudio5 小时前
全网最适合入门的面向对象编程教程:56 Python字符串与序列化-正则表达式和re模块应用
python·单片机·嵌入式·面向对象·电子diy
丶21365 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python
_.Switch6 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
一个闪现必杀技6 小时前
Python入门--函数
开发语言·python·青少年编程·pycharm
小鹿( ﹡ˆoˆ﹡ )7 小时前
探索IP协议的神秘面纱:Python中的网络通信
python·tcp/ip·php
卷心菜小温7 小时前
【BUG】P-tuningv2微调ChatGLM2-6B时所踩的坑
python·深度学习·语言模型·nlp·bug
陈苏同学7 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
唐家小妹7 小时前
介绍一款开源的 Modern GUI PySide6 / PyQt6的使用
python·pyqt
羊小猪~~8 小时前
深度学习项目----用LSTM模型预测股价(包含LSTM网络简介,代码数据均可下载)
pytorch·python·rnn·深度学习·机器学习·数据分析·lstm