首页 > Python资料 博客日记
【Python datetime模块精讲】:时间旅行者的日志,精准操控日期与时间
2024-07-02 03:00:05Python资料围观171次
前言
Python的datetime模块提供了日期和时间的类,用于处理日期和时间的算术运算。这个模块包括date、time、datetime和timedelta等类,以及tzinfo接口和timezone类。date类用于表示年、月、日,而time类表示时间。datetime类结合了日期和时间,提供了一个单一的日期时间对象。timedelta类用于表示两个日期或时间之间的差异。此外,tzinfo接口允许用户定义时区信息,而timezone类提供了时区的实现。datetime模块广泛用于需要日期和时间计算的应用程序,如日志记录、调度和数据时间戳。它的强大功能和灵活性使其成为Python标准库中不可或缺的一部分。
一、datetime模块简介
datetime模块是Python标准库中处理日期和时间的常用模块之一。它提供了日期和时间的表示、比较和运算方法,以及常见的格式化和解析函数。
二、常用类和方法
# datetime模块提供了许多有用的类和方法,下面是其中一些常用的:
# 导入datetime模块
import datetime
类或方法 | 描述 |
---|---|
datetime.date | 表示一个具体的日期,包括年份、月份和日数 |
datetime.time | 表示一个具体的时间,包括小时、分钟、秒和微秒 |
datetime.datetime | 表示一个具体的日期和时间,包括日期和时间的所有信息 |
datetime.timedelta | 表示两个日期或时间之间的差距 |
datetime.datetime.today() / datetime.datetime.now() | 返回表示当前日期和时间的对象 |
datetime.datetime.fromtimestamp(ts) | 将时间戳转换为datetime对象 |
datetime.datetime.strftime(format) / datetime.datetime.strptime(date_string, format) | 将datetime对象格式化为字符串,或将字符串解析为datetime对象 |
时间格式化符号
格式 | 描述 | 注释 |
---|---|---|
%Y | 年 | 2021 |
%y | 年 | 21 |
%m | 月 | |
%d | 日 | |
%H | 时 | 24小时制(晚上九点:21:00) |
%I | 时 | 12小时制(晚上九点:9:00) |
%M | 分 | |
%S | 秒 | |
%p | 上午AM 下午 PM |
三、date类
# date类表示一个具体的日期,其中包括以下属性:
属性 | 描述 |
---|---|
year | 年份 |
month | 月份 |
day | 日数 |
weekday() | 返回星期几(0表示星期一,6表示星期日) |
isoweekday() | 返回ISO规定的星期几(1表示星期一,7表示星期日) |
isocalendar() | 返回一个元组,其中包含年份、周数和星期几 |
strftime(format) | 将date对象格式化为字符串 |
# 创建一个date对象:
d = datetime.date(year, month, day)
d = datetime.date(2023, 5, 11)
year
属性表示日期对象的年份month
属性表示日期对象的月份day
属性表示日期对象的日数isoweekday()
方法返回ISO规定的星期几,其中1表示星期一,7表示星期日。weekday()
方法返回星期几,其中0表示星期一,6表示星期日。isocalendar()
方法返回一个元组,其中包含年份、周数和星期几。
import datetime
d = datetime.date(2023, 5, 11)
print(d.year) # 2023
print(d.month) # 5
print(d.day) # 11
print(d.isoweekday()) # 4
print(d.weekday()) # 3
print(d.isocalendar()) # (2023, 19, 4)
strftime()方法将date对象格式化为字符串。format参数是一个格式化字符串,其中包含特定的代码,代表日期和时间的不同部分。
import datetime
d = datetime.date(2023, 5, 11)
s = d.strftime('%Y-%m-%d')
print(s) # 2023-05-11
四、time类
# time类表示一个具体的时间,其中包括以下属性:
属性 | 描述 |
---|---|
hour | 小时 |
minute | 分钟 |
second | 秒 |
microsecond | 微秒 |
strftime(format) | 将time对象格式化为字符串 |
# 创建一个time对象:
t = datetime.time(hour=0, minute=0, second=0, microsecond=0)
t = datetime.time(10, 0)
hour
属性表示时间对象的小时数minute
属性表示时间对象的分钟数second
属性表示时间对象的秒数microsecond
属性表示时间对象的微秒数
import datetime
t = datetime.time(10, 30, 15, 500000)
print(t.hour) # 10
print(t.minute) # 30
print(t.second) # 15
print(t.microsecond) # 500000
# strftime()方法将time对象格式化为字符串。format参数是一个格式化字符串,其中包含特定的代码,代表日期和时间的不同部分。
import datetime
t = datetime.time(10, 30, 15)
s = t.strftime('%H:%M:%S')
print(s) # 10:30:15
五、datetime类
# datetime类表示一个具体的日期和时间,其中包括以下属性:
属性 | 描述 |
---|---|
year | 年份 |
month | 月份 |
day | 日数 |
hour | 小时 |
minute | 分钟 |
second | 秒 |
microsecond | 微秒 |
timestamp() | 返回时间戳(自1970年以来的秒数) |
weekday() | 返回星期几(0表示星期一,6表示星期日) |
isoweekday() | 返回ISO规定的星期几(1表示星期一,7表示星期日) |
isocalendar() | 返回一个元组,其中包含年份、周数和星期几 |
strftime(format) | 将datetime对象格式化为字符串 |
#v创建datetime对象
dt = datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond]]]])
dt = datetime.datetime(2023, 5, 11, 10, 0)
year
属性表示日期时间对象的年份month
属性表示日期时间对象的月份day
属性表示日期时间对象的日数hour
属性表示日期时间对象的小时数minute
属性表示日期时间对象的分钟数second
属性表示日期时间对象的秒数microsecond
属性表示日期时间对象的微秒数
import datetime
dt = datetime.datetime(2023, 5, 11, 10, 30, 15, 500000)
print(dt.year) # 2023
print(dt.month) # 5
print(dt.day) # 11
print(dt.hour) # 10
print(dt.minute) # 30
print(dt.second) # 15
print(dt.microsecond) # 500000
timestamp()
方法返回自1970年1月1日以来的秒数weekday()
方法返回星期几,其中0表示星期一,6表示星期日。isoweekday()
方法返回ISO规定的星期几,其中1表示星期一,7表示星期日isocalendar()
方法返回一个元组,其中包含年份、周数和星期几。
import datetime
dt = datetime.datetime(2023, 5, 11, 10, 30, 15)
print(dt.timestamp() ) # 1686790215.0
print(dt.weekday()) # 3
print(dt.isoweekday()) # 4
print(dt.isocalendar()) # (2023, 19, 4)
strftime()方法将datetime对象格式化为字符串。format参数是一个格式化字符串,其中包含特定的代码,代表日期和时间的不同部分。
import datetime
dt = datetime.datetime(2023, 5, 11, 10, 30, 15)
s = dt.strftime('%Y-%m-%d %H:%M:%S')
print(s) # 2023-05-11 10:30:15
strptime()方法是将字符串转换为datetime对象的方法。它根据特定的格式化代码将字符串解析为datetime对象。
import datetime
s = '2023-05-11 10:30:15'
dt = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
print(dt) # 2023-05-11 10:30:15
六、timedelta类
# timedelta类表示两个日期或时间之间的差距,它支持以下属性:
属性 | 描述 |
---|---|
days | 天数 |
seconds | 秒数 |
microseconds | 微秒数 |
total_seconds() | 返回总秒数 |
# 创建一个timedelta对象:
delta = datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
delta = datetime.timedelta(days=10)
timedelta对象的days属性表示天数
import datetime
d1 = datetime.date(2023, 5, 11)
d2 = datetime.date(2023, 5, 1)
delta = d1 - d2
print(delta.days) # 10
timedelta对象的seconds属性表示秒数
import datetime
t1 = datetime.datetime(2023, 5, 11, 10, 30, 15)
t2 = datetime.datetime(2023, 5, 11, 10, 0, 0)
delta = t1 - t2
print(delta.seconds) # 1815
# timedelta对象的microseconds属性表示微秒数
import datetime
t1 = datetime.datetime(2023, 5, 11, 10, 30, 15, 500000)
t2 = datetime.datetime(2023, 5, 11, 10, 30, 15)
delta = t1 - t2
print(delta.microseconds) # 500000
# total_seconds()方法返回总秒数
import datetime
t1 = datetime.datetime(2023, 5, 11, 10, 30, 15)
t2 = datetime.datetime(2023, 5, 8, 10, 0, 0)
delta = t1 - t2
print(delta) # 3 days, 0:30:15
print(delta.seconds) # 1815
print(delta.total_seconds()) # 261015.0
七、常用的函数和属性
# datetime模块还提供了一些其他有用的函数和属性,下面是其中一些常用的:
函数或属性 | 描述 |
---|---|
datetime.datetime.today() / datetime.datetime.now() | 返回表示当前日期和时间的对象 |
datetime.datetime.fromtimestamp(ts) | 将时间戳转换为datetime对象 |
datetime.datetime.astimezone(tz=None) | 返回带有时区信息的datetime对象 |
datetime.datetime.utcoffset() | 返回一个datetime对象相对于UTC的偏移量 |
datetime.date.today() | 返回表示当前日期的date对象 |
datetime.datetime.combine(date, time) | 将一个date对象和一个time对象组合成一个datetime对象 |
# datetime.datetime.today() / datetime.datetime.now()
# 这两个方法都返回表示当前日期和时间的datetime对象。
import datetime
dt_now = datetime.datetime.now()
dt_today = datetime.datetime.today()
print(dt_now)
print(dt_today)
# 2023-05-11 15:30:15.123456
# 2023-05-11 15:30:15.123456
"""
它们的区别在于,today()方法不接受任何参数,而now()方法可以接受一个可选参数,用于指定时区。如果不指定,则默认使用系统本地时区。
"""
fromtimestamp()方法将时间戳转换为datetime对象。
# datetime.datetime.fromtimestamp(ts)
import datetime
# ts1 = datetime.datetime.now()
# ts = datetime.datetime.now().timestamp()
# print(ts1)
# print(ts)
ts = 1686790215.0 # 时间戳
dt = datetime.datetime.fromtimestamp(ts)
print(dt) # 2023-05-12 02:30:15
astimezone()方法返回带有时区信息的datetime对象,如果tz参数未提供,则默认使用系统本地时区。
# datetime.datetime.astimezone(tz=None)
import datetime
dt = datetime.datetime(2023, 5, 11, 10, 30, 15)
# 将时区从本地修改为UTC+8
tzinfo = datetime.timezone(datetime.timedelta(hours=8))
dt2 = dt.astimezone(tz=tzinfo)
print(dt2) # 2023-05-11 18:30:15+08:00
utcoffset()方法是datetime模块中tzinfo类的一个方法,用于返回一个timedelta对象,表示当前时区相对于协调世界时(UTC)的偏移量。这个方法通常在处理时区相关的日期和时间时使用。
# datetime.datetime.utcoffset()
# utcoffset()方法返回一个datetime对象相对于UTC的偏移量。
import datetime
dt = datetime.datetime(2023, 5, 11, 10, 30, 15).astimezone()
print(dt.utcoffset()) # 8:00:00
date.today()方法用于获取当前日期。这个方法不需要任何参数,并返回一个date对象,表示当前的年、月、日。
# datetime.date.today()
# today()方法返回表示当前日期的date对象。
import datetime
d_today = datetime.date.today()
print(d_today) # 2023-05-11
combine()
方法将一个date对象和一个time对象组合成一个datetime对象。
# datetime.datetime.combine(date, time)
import datetime
d = datetime.date(2023, 5, 11)
t = datetime.time(10, 30, 15)
dt = datetime.datetime.combine(d, t)
print(dt) # 2023-05-11 10:30:15
八、代码及其演示
# 计算两个日期之间的天数差距
import datetime
d1 = datetime.date(2023, 5, 1)
d2 = datetime.date(2023, 5, 11)
delta = d2 - d1
print(delta.days) # 10
# 获取当前时间并格式化输出
import datetime
now = datetime.datetime.now()
s = now.strftime('%Y-%m-%d %H:%M:%S')
print(s) # 2023-05-11 10:00:00
# 将一个字符串解析为datetime对象
import datetime
s = '2023-05-11 10:00:00'
dt = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
print(dt) # 2023-05-11 10:00:00
# datetime模块提供了一组强大的工具来处理日期和时间相关的问题,包括日期、时间、日期时间、时间差和格式化等。学会了使用这些工具,我们就可以方便地进行日期和时间相关的计算、比较和格式化,从而使程序更具可读性和可维护性。
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程