1.概述
Python中的日期不是其自身的数据类型,我们可以导入名为datetime
的模块,把日期当做日期对象处理。
1.1 全部模块
datetime包括以下类/函数:
1.2 常用模块
类名 | 功能说明 |
---|---|
date | 日期对象,常用的属性有year, month, day |
time | 时间对象 |
datetime | 日期时间对象,常用的属性有hour, minute, second, microsecond |
timedelta | 时间间隔,即两个时间点之间的长度 |
tzinfo | 时区信息对象 |
1.3 常量
常量 | 功能说明 | 用法 | 返回值 |
---|---|---|---|
MAXYEAR | 返回能表示的最大年份 | datetime.MAXYEAR | 9999 |
MINYEAR | 返回能表示的最小年份 | datetime.MINYEAR | 1 |
datetime.py
文件中有如下定义:
MINYEAR = 1
MAXYEAR = 9999
_MAXORDINAL = 3652059 # date.max.toordinal()
2. 模块详解
2.1 datetime
datetime
模块初始化代码如下:
class datetime(date):
"""datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])
The year, month and day arguments are required. tzinfo may be None, or an
instance of a tzinfo subclass. The remaining arguments may be ints.
"""
__slots__ = date.__slots__ + time.__slots__
def __new__(cls, year, month=None, day=None, hour=0, minute=0, second=0,
microsecond=0, tzinfo=None, *, fold=0):
示例:
# 导入日期模块
import datetime
# 显示当前日期:2019-08-14 12:52:55.817273
x = datetime.datetime.now()
print(x)
# 创建日期对象:
import datetime
x = datetime.datetime(2020, 5, 17)
print(x)
# 显示月份的名称:
import datetime
x = datetime.datetime(2019, 10, 1)
print(x.strftime("%B"))
所有合法格式代码的参考:
指令 | 描述 | 实例 |
---|---|---|
%a | Weekday,短版本 | Wed |
%A | Weekday,完整版本 | Wednesday |
%w | Weekday,数字 0-6,0 为周日 | 3 |
%d | 日,数字 01-31 | 31 |
%b | 月名称,短版本 | Dec |
%B | 月名称,完整版本 | December |
%m | 月,数字01-12 | 12 |
%y | 年,短版本,无世纪 | 18 |
%Y | 年,完整版本 | 2018 |
%H | 小时,00-23 | 17 |
%I | 小时,00-12 | 05 |
%p | AM/PM | PM |
%M | 分,00-59 | 41 |
%S | 秒,00-59 | 08 |
%f | 微妙,000000-999999 | 548513 |
%z | UTC 偏移 | +0100 |
%Z | 时区 | CST |
%j | 天数,001-366 | 365 |
%U | 周数,每周的第一天是周日,00-53 | 52 |
%W | 周数,每周的第一天是周一,00-53 | 52 |
%c | 日期和时间的本地版本 | Mon Dec 31 17:41:00 2018 |
%x | 日期的本地版本 | 12/31/18 |
%X | 时间的本地版本 | 17:41:00 |
%% | A % character | % |
2.2 timedelta
timedelta
类是用来计算二个datetime
对象的差值。
此类中包含如下属性:
1、days:天数
2、microseconds:微秒数(>=0 并且 <1秒)
3、seconds:秒数(>=0 并且 <1天)
初始化代码如下:
class timedelta:
"""Represent the difference between two datetime objects.
Supported operators:
- add, subtract timedelta
- unary plus, minus, abs
- compare to timedelta
- multiply, divide by int
In addition, datetime supports subtraction of two datetime objects
returning a timedelta, and addition or subtraction of a datetime
and a timedelta giving a datetime.
Representation: (days, seconds, microseconds). Why? Because I
felt like it.
"""
__slots__ = '_days', '_seconds', '_microseconds', '_hashcode'
def __new__(cls, days=0, seconds=0, microseconds=0,
milliseconds=0, minutes=0, hours=0, weeks=0):
# Doing this efficiently and accurately in C is going to
示例:
# 可用变量单位:days=0, seconds=0, microseconds=0,milliseconds=0, minutes=0, hours=0, weeks=0
# Out[37]: datetime.datetime(2020, 9, 29, 10, 49, 38, 755711)
datetime.datetime.today() + datetime.timedelta(days=-1)
# Out[36]: datetime.datetime(2020, 9, 30, 9, 48, 42, 363677)
datetime.datetime.today() + datetime.timedelta(hours=-1)