Python 官方提供的日期和时间模块主要有 time
和 datetime
模块。
time
偏重于底层平台,模块中大多数函数会调用本地平台上的 C
链接库,因此有些函数运行的结果,在不同的平台上会有所不同。
datetime
模块对 time
模块进行了封装,提供了高级 API。
datetime 模块中提供了以下几个类:
- datetime:包含时间和日期
- date:只包含日期
- time:只包含时间
- timedelta:计算时间跨度
- tzinfo:时区信息
datetime
模块的核心类是 datetime
、date
和 time
类。
12.3.1 datetime类
1:datetime
类
一个 datetime
对象可以表示日期和时间等信息,创建 datetime
对象可以使用如下
构造方法:
datetime.datetime(year, month, day, hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None)
其中:
- year 、month 和 day 三个参数是不能省略的
- tzinfo 是时区参数,默认值是 None 表示不指定时区
- 除了 tzinfo 外,其他的参数全部为合理范围内的整数
- 这些参数的取值范围,如果超出范围会抛出 ValueError
参数 | 取值范围 | 说明 |
---|---|---|
year | datetime.MINYEAR ≤ year ≤ datetime.MAXYEAR | datetime.MINYEAR 常量是最小年 datetime.MAXYEAR 常量是最大年 |
month | 1 ≤ month ≤ 12 | ———— |
day | 1 ≤ day ≤ 给定年份和月份时,该月的最大天数 | 注意闰年二月份时比较特殊的有29天 |
hour | 0 ≤ hour ≤ 24 | ———— |
minute | 0 ≤ minute < 60 | ———— |
second | 0 ≤ second < 60 | ———— |
microsecond | 0 ≤ microsecond < 1000000 | ———— |
示例代码如下:
# 导入模块
import datetime
dt = datetime.datetime(2021, 12, 23)
print(dt)
dt = datetime.datetime(2021, 12, 23, 0, 0)
print(dt)
dt = datetime.datetime(2021, 12, 23, 23, 30, 59, 10000)
print(dt)
执行结果:
2021-12-23 00:00:00
2021-12-23 00:00:00
2021-12-23 23:30:59.010000
除了通过构造方法创建并初始化 datetime
对象,还可以通过 datetime
类提供的一些类方法获得 datetime
对象,这些类方法有以下几种:
datetime.today()
返回当前本地日期和时间datetime.now(tz=None)
返回本地当前的日期和时间,如果参数tz
为None
或未指定,则等同于today()
datetime.utcnow()
返回当前 UTC 日期和时间datetime.fromtimestamp(timestamp, tz = None)
返回与 UTC 时间戳对应的本地日期和时间datetime .utcfromtimestamp(timestamp)
返回与 UNIX 时间戳对应的 UTC 日期和时间
示例代码如下:
import datetime
dt = datetime.datetime.today()
print(dt)
dt = datetime.datetime.now()
print(dt)