40. Python 标准库 datetime 模块

AI 概述
Python标准库datetime包含date、time、datetime、timedelta四大核心类。date处理年月日,time管理时分秒微秒,datetime整合日期与时间,timedelta用于时间差值运算。文中搭配实操示例讲解各类构造、属性读取、isoformat、strftime格式化、replace修改、combine组合及时间加减计算,覆盖日期时间创建、格式化、偏移运算等常用操作。
目录
文章目录隐藏
  1. 1. datetime.date 类
  2. 2. datetime.time 类
  3. 3. datetime.datetime 类
  4. 4. datetime.timedelta 类

Python 标准库中的 datetime 模块提供了和日期和时间相关的类:

功能
datetime.date 以年、月和日表示日历中的日期
datetime.time 以小时、分钟和秒表示一天中的时间
datetime.datetime 以年、月、日、小时、分钟和秒表示日期和时间
datetime.timedelta 表示一个时间段,即两个日期时间之间的差

1. datetime.date 类

date 类以年、月和日表示日历中的日期,示例如下:

>>> from datetime import date
>>> date.today()
datetime.date(2026, 7, 16)
>>> d = date(2026, 5, 1)

解析:

  • 从 datetime 模块中引入 date 类
  • date.today()返回表示今天的日期对象
  • 构造日期 2026 年 5 月 1 日
>>> d.year
2026
>>> d.month
7
>>> d.day
16

解析:

  • d.year返回日期对象的年份
  • d.month返回日期对象的月份
  • d.day返回日期对象的日
>>> d.weekday()
4
>>> d.isoweekday()
5
>>> d.isoformat()
'2026-05-01'
>>> d.isocalendar()
(2026, 18, 5)

解析:

  • d.weekday()返回一星期中的第几天, 星期一是 0
  • d.isoweekday()返回一星期中的第几天, 星期一是 1
  • d.isoformat()以格式 YYYY-MM-DD 返回日期的字符串形式
  • d.isocalendar()返回一个元组
    • 第 0 项是年份
    • 第 1 项是这一年的第几周
    • 第 2 项是周几
>>> d.ctime()
'Fri May  1 00:00:00 2026'
>>> d.strftime("%Y-%m-%d")
'2026-05-01'

解析:

  • d.ctime()返回一个表示日期的字符串
  • d.strftime()返回指定格式的日期字符串
    • %Y 表示年份
    • %m 表示月份
    • %d 表示日
>>> e = d.replace(year=2000, month=12)
>>> e
datetime.date(2000, 12, 1)
  • d.replace()替换年份、月份、日期生成一个新日期
    • 将年份替换为 2000
    • 将月份替换为 12

2. datetime.time 类

time 类以小时、分钟和秒表示一天中的时间,示例如下:

>>> from datetime import time
>>> t = time(18, 19, 20, 21)
>>> t.hour
19
>>> t.minute
20
>>> t.second
21
>>> t.microsecond
22

解析:

  • 从 datetime 模块中引入 time 类
  • 构造时间 19 时 20 分 21 秒 22 微秒
    • t.hour返回小时
    • t.minute返回分钟
    • t.second返回秒
    • t.microsecond返回微秒
>>> t.isoformat()
'19:20:21.000022'
>>> t.strftime("%H:%M:%S:%f")
'19:20:21:000022'

解析:

  • t.isoformat()返回 ISO 8601 格式的时间字符串
  • t.strftime()返回指定格式的时间格式
    • %H 表示小时
    • %M 表示分钟
    • %S 表示秒
    • %f 表示微秒
>>> u = t.replace(hour=8, minute=8, second = 8)
>>> u
datetime.time(8, 8, 8, 21)  

解析:

  • t.replace()替换小时、分钟、秒生成一个新时间
    • 将小时替换为 8
    • 将分钟替换为 8
    • 将秒替换为 8

3. datetime.datetime 类

datetime 类年、月、日、小时、分钟和秒表示日期和时间,包含 date 对象和 time 对象的所有信息,示例如下:

>>> from datetime import datetime,date,time
>>> datetime.today()
datetime.datetime(2026, 7, 16, 12, 27, 34, 896212)

解析:

  • 从 datetime 模块中引入类 datetime、类 date、类 time
  • datetime.today()返回表示今天的日期对象,包括年、月、日、小时、分钟、秒和微秒
>>> d = date(2026,12,12)
>>> t = time(8,8,8,8)
>>> dt = datetime.combine(d, t)
>>> dt
datetime.datetime(2026, 12, 12, 8, 8, 8, 8)

解析:

  • 构造日期对象 d
  • 构造时间对象 t
  • datetime.combine(d, t)将日期对象 d 和时间对象 t 组合形成一个日期时间对象 dt
>>> dt.isoformat()
'2026-12-12T08:08:08.000008'
>>> dt.strftime("%Y-%m-%d %H:%M:%S:%f")
'2026-12-12 08:08:08:000008'

解析:

  • t.isoformat()返回 ISO 8601 格式的时间字符串
  • t.strftime()返回指定格式的时间格式
    • %Y 表示年份
    • %m 表示月份
    • %d 表示日
    • %H 表示小时
    • %M 表示分钟
    • %S 表示秒
    • %f 表示微秒
>>> u = dt.replace(year=2000, hour=20)
>>> u
datetime.datetime(2000, 12, 12, 20, 8, 8, 8)
>>> u.year
2000
>>> u.hour
20

解析:

  • dt.replace()替换年、月、日、小时、分钟、秒生成一个新时间
    • 将年份替换为 2000
    • 将小时替换为 20

4. datetime.timedelta 类

timedelta 对象表示一个时间段,即两个日期 (date) 或日期时间 (datetime) 之间的差。timedelta 接受命名参数:weeks、days、hours、minutes、seconds、milliseconds、microseconds,示例如下:

>>> from datetime import date,timedelta
>>> d = date(2026,12,12)
>>> delta = timedelta(days=3)
>>> d - delta
datetime.date(2026, 12, 9)

解析:

  • 从 datetime 模块中导入相关的类
  • 创建日期对象 2026 年 12 月 12 日
  • 创建长度为 3 天的时间段
  • 日期 d 前三天的日期是 2026 年 12 月 9 日
>>> dt = datetime(2026, 12, 12, 8, 8, 8, 8)
>>> delta = timedelta(days = 3, hours = 3)
>>> dt - delta
datetime.datetime(2026, 12, 9, 5, 8, 8, 8)

解析:

  • 从 datetime 模块中导入相关的类
  • 创建日期对象 2026 年 12 月 12 日 8 时 8 分 8 秒 8 微秒
  • 创建长度为 3 天 3 小时的时间段
  • 日期 d 前 3 天 3 小时的日期是 2026 年 12 月 9 日 5 时 8 分 8 秒 8 微秒

以上关于40. Python 标准库 datetime 模块的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 40. Python 标准库 datetime 模块

发表回复