datetime 主要包含 date(日期相关操作),time(时间相关操作),datetime(date 和 time 的整合),datetime_CAPI(C 语言接口),timezone(时区操作),timedelta(时间差值表示)。
同时需要注意由于 date,time 和 datetime 的功能极其类似,因此相同的方法只介绍一遍,感觉适用的方法基本都适用且功能类似。还有就是一个对象的成员函数通常也能够通过指定类的静态方法实现调用,文中不再过多介绍,读者可自行尝试后使用。
date 类通过 datetime.date(year, month, day) 创建对象,之后可以通过 year,month,day 对象引用 date 实例中的对应信息。其中,year 的范围为 [1, 9999],month 为 [1, 12],day 根据具体的年和月确定。
常用函数介绍如下:
time 类通过 datetime.time(hour, minute, second, microsecond) 创建对象,对应对象的属性值通过 hour, minute, second, microsecond 取得。
datetime 类通过 datetime.datetime(year, month, day, hour, minute, second, microsecond, tzinfo) 创建对象,对应对象的属性值通过类似方法取得。
timezone 类描述了对应时间的时区,可以通过 timezone(timedelta) 构造实例。需要注意的是只有 datetime.datetime 类有时区信息且默认创建的 datetime 对象时区信息为空。
时间之间进行加减运算都会产生 timedelta 类,其通过 timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) 构造。其具体操作就是时间的加加减减比较简单,需要注意的是 timedelta 的 days 属性是两个时刻相差的完整天数,seconds 是去除 days 相差时间之后相差的秒数(因此相差秒数一定小于 1 天),同理 microseconds 是去除 seconds 相差时间之后相差的微妙数(因此相差微妙数一定小于 1 秒)。
其实大量涉及时间的操作都是不同格式下时间的转换。首先我先给出格式化字符的说明,然后再一一介绍常用的函数。
符号 | 说明 |
---|---|
%y | 两位数的年份表示(00-99) |
%Y | 四位数的年份表示(000-9999) |
%m | 月份(01-12) |
%d | 月内中的一天(0-31) |
%H | 24小时制小时数(0-23) |
%I | 12小时制小时数(01-12) |
%M | 分钟数(00=59) |
%S | 秒(00-59) |
%a | 本地简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化的月份名称 |
%B | 本地完整的月份名称 |
%c | 本地相应的日期表示和时间表示 |
%j | 年内的一天(001-366) |
%p | 本地A.M.或P.M.的等价符 |
%U | 一年中的星期数(00-53)星期天为星期的开始 |
%w | 星期(0-6),星期天为星期的开始 |
%W | 一年中的星期数(00-53)星期一为星期的开始 |
%x | 本地相应的日期表示 |
%X | 本地相应的时间表示 |
%Z | 当前时区的名称 |
%% | %号本身 |
常用函数:
下面介绍的并不是 datetime 中的内容,而是独立的 time 包的内容。同时,这里只做简要介绍。
常用函数: