处理日期和时间
1 常量
| MINYEAR | datetime允许的最小年份 
 | 
| MAXYEAR | datetime允许的最大年份 
 | 
2 数据类型
| datetime.date | 带有属性year,month,day | 
| datetime.time | 带有属性hour,minute,second,microsecond,tzinfo | 
| datetime.datetime | 带有属性year,month,day,hour,minute,second,microsecond,tzinfo | 
| datetime.timedelta | 两个date对象、两个time对象、两个datetime对象之间的时间间隔 | 
| datetime.tzinfo | 描述时区信息对象的抽象基类 | 
| datetime.timezone | 实现了datetime.tzinfo抽象基类的子类,用于表示相对于 世界标准时间(UTC)的偏移量 | 
3 timedelta对象
两个date对象、两个time对象、两个datetime对象之间的时间间隔
class datetime.timedelta(days=0, 
                        seconds=0, 
                        microseconds=0, 
                        milliseconds=0, 
                        minutes=0, 
                        hours=0, 
                        weeks=0)3.1 存储方式
只有 days, seconds 和 microseconds 会存储在内部。 其他的参数在存储时会进行如下的转换:
-  1毫秒会转换成1000微秒。 
-  1分钟会转换成60秒。 
-  1小时会转换成3600秒。 
-  1星期会转换成7天。 
from datetime import timedelta
delta=timedelta(
    days=50,
    seconds=27,
    microseconds=10,
    milliseconds=29000,
    minutes=5,
    hours=8,
    weeks=2)
delta
#datetime.timedelta(days=64, seconds=29156, microseconds=10)4 date对象
代表一个理想化历法中的日期(年、月和日)
4.1 创建date对象
class datetime.date(year, month, day)4.2 方法
| today |  | 
| fromordinal | 公元1年1月1日的序号为1 
 | 
| fromisoformat | 根据string获得对应的date对象 
 | 
| fromisocalendar(year, week, day) | 根据指定year,week,day,返回对应的date对象 
 返回2023年4月份的第一天(从周一开始) 【2023年的第一周是指第一个完整周(周一在2023年的一周)】 | 
| replace | date.replace(year=self.year, month=self.month, day=self.day) 将replace中对应的参数替换掉 
 | 
| timetuple | 返回一个结构化的timetuple 
 年月日、小时分钟秒、这一周的第几天(从0开始),这一年的第几天(从1开始) | 
| toordinal | 距离公元1年1月1日相隔多少天 
 | 
| weekdayisoweekday | weekday——返回一个整数代表星期几,星期一为0,星期天为6 isoweekday——返回一个整数代表星期几,星期一为1,星期天为7 
 | 
| isocalendar | 返回一个由三部分组成的nametuple对象:  
 | 
| strftime | strftime(string)——以string作为格式的datetime(string格式见后面) [string format time] 
 | 
4.3 运算

from datetime import timedelta
td=timedelta(days=10,weeks=2)
from datetime import date
d1=date(2023,4,1)
d2=date(2023,4,15)
d1+td,d1-td
#(datetime.date(2023, 4, 25), datetime.date(2023, 3, 8))
d1-d2,d1<d2
#(datetime.timedelta(days=-14), True)5 datetime
5.1 创建datetime对象
class datetime.datetime(
    year, 
    month, 
    day, 
    hour=0, 
    minute=0, 
    second=0, 
    microsecond=0, 
    tzinfo=None, 
    *, 
    fold=0)5.2 主要方法
| today | 当前时刻的datetime 
 | 
| now | now(tz=none) 
 如果不设置tz参数的话,和today是一样的 | 
| utcnow | 当前 UTC 时间的 date 和 time 
 | 
| fromordinal | 距离公元1年1月1日相隔几天,后面的hour\minute\second等均为0 
 | 
| combine | datetime.combine(date, time, tzinfo=self.tzinfo) 返回的内容是date和time的combine结果 | 
| fromisocalendar | datetime.fromisocalendar(year, week, day) 返回以year,week和day对应的datetime 
 | 
| datetime | datetime中的date部分和time部分  | 
| replace | 将指定部分替换 | 
| timetupleutctimetuple | 返回一个结构化的timetuple 
 年月日、小时分钟秒、这一周的第几天(从0开始),这一年的第几天(从1开始) utctimetuple——UTC标准时间的timetuple() | 
| toordinalweekdayisoweekdayisocalendar | 同date对应方法 | 
| isoformat | isoformat(sep='T', timespec='auto') 
 
 | 
| strftime | 也是得到指定format的datetime string 
 | 
5.3 运算
类似于date

6 time对象
datetime对象除去date之后的部分
6.1 构建
datetime.time(
    hour=0, 
    minute=0, 
    second=0, 
    microsecond=0, 
    tzinfo=None, 
    *, 
    fold=0)6.2 主要方法
| replace | |
| isoformat | time.isoformat(timespec='auto') 
 | 
| strftime | 
7 strftime 和 strptime涉及的format
7.1 strftime和strptime
| strftime | strptime | |
| 用法 | 根据给定的格式将对象转换为字符串 | 将字符串解析为给定相应格式的datetime对象 | 
| 方法类型 | 实例方法(类的一个实例) | 类的方法 | 
| 使用方式 | strftime(format) | strptime(date_string, format) | 
7.2 主要format
| %a | 星期几的缩写 
 | |
| %A | 星期几的完整拼写 
 | |
| %w | 以十进制数显示的工作日,其中0表示星期日,6表示星期六 0, 1, ..., 6 | |
| %d | 补零后,以十进制数显示的月份中的一天 01, 02, ..., 31 | |
| %b | 月份的缩写 Jan, Feb, ..., Dec | |
| %B | 月份的全拼 January, February, ..., December | |
| %m | 补零后,以十进制数显示的月份 01, 02, ..., 12 | |
| %y | 补零后,以十进制数表示的,不带世纪的年份。 00, 01, ..., 99 | |
| %Y | 十进制数表示的带世纪的年份 0001, 0002, ..., 2013, 2014, ..., 9998, 9999 | |
| %H | 以补零后的十进制数表示的小时(24 小时制) 00, 01, ..., 23 | |
| %I | 以补零后的十进制数表示的小时(12 小时制) 01, 02, ..., 12 | |
| %p | 本地化的 AM 或 PM AM, PM | |
| %M | 补零后,以十进制数显示的分钟 00, 01, ..., 59 | |
| %S | 补零后,以十进制数显示的秒 00, 01, ..., 59 | |
| %Z | 时区名称 | |
| %j | 以补零后的十进制数表示的一年中的日序号 001, 002, ..., 366 | |
| %U | 
 | |
| %W | 以补零后的十进制数表示的一年中的周序号(星期一作为每周的第一天)。 在新的一年中第一个星期一之前的所有日子都被视为是在第 0 周 00, 01, ..., 53 | |
| %c | 本地化的适当日期和时间表示 
 | |
| %x | 本地化的适当日期表示 
 
 
 | |
| %X | 本地化的适当时间表示 
 | 
参考内容:datetime --- 基本日期和时间类型 — Python 3.11.3 文档









































![[STM32F103C8T6]DMA](https://img-blog.csdnimg.cn/9c1164fe90b74b50ac1ebd01fda4a6b4.png)