python笔记:datetime
处理日期和时间
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 timedeltatd=timedelta(days=10,weeks=2)from datetime import dated1=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 文档