Python Datetime 模块

Python Datetime 模块

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

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

1. datetime.date 类

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

>>> from datetime import date>>> date.today()datetime.date(, , )>>> d = date(, , )
  • 从 datetime 模块中引入 date 类

  • date.today() 返回表示今天的日期对象

  • 构造日期 2020 年 5 月 1 日

>>> d.year>>> d.month>>> d.day
  • d.year 返回日期对象的年份

  • d.month 返回日期对象的月份

  • d.day 返回日期对象的日

>>> d.weekday()>>> d.isoweekday()>>> d.isoformat()'2020-05-01'>>> d.isocalendar()(, , )
  • d.weekday() 返回一星期中的第几天, 星期一是 0

  • d.isoweekday() 返回一星期中的第几天, 星期一是 1

  • d.isoformat() 以格式 YYYY-MM-DD 返回日期的字符串形式

  • d.isocalendar() 返回一个元组

    • 第 0 项是年份

    • 第 1 项是这一年的第几周

    • 第 2 项是周几

>>> d.ctime()'Fri May  1 00:00:00 2020'>>> d.strftime(%Y-%m-%d)'2020-05-01'
  • d.ctime() 返回一个表示日期的字符串

  • d.strftime() 返回指定格式的日期字符串

    • %Y 表示年份

    • %m 表示月份

    • %d 表示日

>>> e = d.replace(year=, month=)>>> e
datetime.date(, , )
  • d.replace() 替换年份、月份、日期生成一个新日期

    • 将年份替换为 2000

    • 将月份替换为 12

2. datetime.time 类

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

>>> from datetime import time>>> t = time(, , , )>>> t.hour>>> t.minute>>> t.second>>> t.microsecond
  • 从 datetime 模块中引入 time 类

  • 构造时间 18 时 19 分 20 秒 21 微秒

    • t.hour 返回小时

    • t.minute 返回分钟

    • t.second 返回秒

    • t.microsecond 返回微秒

>>> t.isoformat()'18:19:20.000021'>>> t.strftime(%H:%M:%S:%f)'18:19:20:000021'
  • t.isoformat() 返回 ISO 8601 格式的时间字符串

  • t.strftime() 返回指定格式的时间格式

    • %H 表示小时

    • %M 表示分钟

    • %S 表示秒

    • %f 表示微秒

>>> u = t.replace(hour=, minute=, second = )>>> u
datetime.time(, , , )
  • t.replace() 替换小时、分钟、秒生成一个新时间

    • 将小时替换为 8

    • 将分钟替换为 8

    • 将秒替换为 8

3. datetime.datetime 类

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

>>> from datetime import datetime,date,time>>> datetime.today()datetime.datetime(, , , , , , )
  • 从 datetime 模块中引入类 datetime、类 date、类 time

  • datetime.today() 返回表示今天的日期对象,包括年、月、日、小时、分钟、秒和微秒

>>> d = date(,,)>>> t = time(,,,)>>> dt = datetime.combine(d, t)>>> dt
datetime.datetime(, , , , , , )
  • 构造日期对象 d

  • 构造时间对象 t

  • datetime.combine(d, t) 将日期对象 d 和时间对象 t 组合形成一个日期时间对象 dt

>>> dt.isoformat()'2020-12-12T08:08:08.000008'>>> dt.strftime(%Y-%m-%d %H:%M:%S:%f)'2020-12-12 08:08:08:000008'
  • t.isoformat() 返回 ISO 8601 格式的时间字符串

  • t.strftime() 返回指定格式的时间格式

    • %Y 表示年份

    • %m 表示月份

    • %d 表示日

    • %H 表示小时

    • %M 表示分钟

    • %S 表示秒

    • %f 表示微秒

>>> u = dt.replace(year=, hour=)>>> u
datetime.datetime(, , , , , , )>>> u.year>>> u.hour
  • 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(,,)>>> delta = timedelta(days=)>>> d - delta
datetime.date(, , )
  • 从 datetime 模块中导入相关的类

  • 创建日期对象 2020 年 12 月 12 日

  • 创建长度为 3 天的时间段

  • 日期 d 前三天的日期是 2020 年 12 月 9 日

>>> dt = datetime(, , , , , , )>>> delta = timedelta(days = , hours = )>>> dt - delta
datetime.datetime(, , , , , , )
  • 从 datetime 模块中导入相关的类

  • 创建日期对象 2020 年 12 月 12 日 8 时 8 分 8 秒 8 微秒

  • 创建长度为 3 天 3 小时的时间段

  • 日期 d 前 3 天 3 小时的日期是 2020 年 12 月 9 日 5 时 8 分 8 秒 8 微秒