前言
Python 日期和时间。
操作系统:Windows 11 家庭中文版
参考文档
示例
datetime 模块提供了以简单和复杂的方式操作日期和时间的类。虽然支持日期和时间算法,但实现的重点是有效的成员提取以进行输出格式化和操作。该模块还支持可感知时区的对象。
>>> # dates are easily constructed and formatted
>>> from datetime import date
>>> now = date.today()
>>> now
datetime.date(2003, 12, 2)
>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
'12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.'
>>> # dates support calendar arithmetic
>>> birthday = date(1964, 7, 31)
>>> age = now - birthday
>>> age.days
14368
strftime() 和 strptime() 格式码
这些方法接受可被用于解析和格式化日期的格式代码:
>>> datetime.strptime('31/01/22 23:59:59.999999',
... '%d/%m/%y %H:%M:%S.%f')
datetime.datetime(2022, 1, 31, 23, 59, 59, 999999)
>>> _.strftime('%a %d %b %Y, %I:%M%p')
'Mon 31 Jan 2022, 11:59PM'
以下列表显示了 1989 版 C 标准所要求的全部格式代码,它们在带有标准 C 实现的所有平台上均可用。
指令 | 含意 | 示例 | 常用 |
---|---|---|---|
%a |
当地工作日的缩写。 |
Sun, Mon, ..., Sat (en_US); So, Mo, ..., Sa (de_DE) |
|
%A |
本地化的星期中每日的完整名称。 |
Sunday, Monday, ..., Saturday (en_US); Sonntag, Montag, ..., Samstag (de_DE) |
|
%w |
以十进制数显示的工作日,其中0表示星期日,6表示星期六。 |
0, 1, ..., 6 |
|
%d |
补零后,以十进制数显示的月份中的一天。 |
01, 02, ..., 31 |
True |
%b |
当地月份的缩写。 |
Jan, Feb, ..., Dec (en_US); Jan, Feb, ..., Dez (de_DE) |
True |
%B |
本地化的月份全名。 |
January, February, ..., December (en_US); Januar, Februar, ..., Dezember (de_DE) |
|
%m |
补零后,以十进制数显示的月份。 |
01, 02, ..., 12 |
True |
%y |
补零后,以十进制数表示的,不带世纪的年份。 |
00, 01, ..., 99 |
|
%Y |
十进制数表示的带世纪的年份。 |
0001, 0002, ..., 2013, 2014, ..., 9998, 9999 |
True |
%H |
以补零后的十进制数表示的小时(24 小时制)。 |
00, 01, ..., 23 |
True |
%I |
以补零后的十进制数表示的小时(12 小时制)。 |
01, 02, ..., 12 |
|
%p |
本地化的 AM 或 PM 。 |
AM, PM (en_US); am, pm (de_DE) |
|
%M |
补零后,以十进制数显示的分钟。 |
00, 01, ..., 59 |
True |
%S |
补零后,以十进制数显示的秒。 |
00, 01, ..., 59 |
True |
%f |
微秒作为一个十进制数,零填充到 6 位。 |
000000, 000001, ..., 999999 |
|
%z |
UTC 偏移量,格式为 ±HHMM[SS[.ffffff]] (如果是简单型对象则为空字符串)。 |
(空), +0000, -0400, +1030, +063415, -030712.345216 |
|
%Z |
时区名称(如果对象为简单型则为空字符串)。 |
(空), UTC, GMT |
|
%j |
以补零后的十进制数表示的一年中的日序号。 |
001, 002, ..., 366 |
|
%U |
以补零后的十进制数表示的一年中的周序号(星期日作为每周的第一天)。 在新的一年中第一个星期日之前的所有日子都被视为是在第 0 周。 |
00, 01, ..., 53 |
|
%W |
以补零后的十进制数表示的一年中的周序号(星期一作为每周的第一天)。 在新的一年中第一个星期一之前的所有日子都被视为是在第 0 周。 |
00, 01, ..., 53 |
|
%c |
本地化的适当日期和时间表示。 |
Tue Aug 16 21:30:00 1988 (en_US); Di 16 Aug 21:30:00 1988 (de_DE) |
|
%x |
本地化的适当日期表示。 |
08/16/88 (None); 08/16/1988 (en_US); 16.08.1988 (de_DE) |
|
%X |
本地化的适当时间表示。 |
21:30:00 (en_US); 21:30:00 (de_DE) |
|
%% |
字面的 '%' 字符。 |
% |
为了方便起见,还包括了C89标准不需要的其他一些指示符。 这些参数都对应于 ISO 8601 日期值。
指令 | 含意 | 示例 |
---|---|---|
%G |
带有世纪的 ISO 8601 年份,表示包含大部分 ISO 星期 (%V) 的年份。 |
0001, 0002, ..., 2013, 2014, ..., 9998, 9999 |
%u |
以十进制数显示的 ISO 8601 星期中的日序号,其中 1 表示星期一。 |
1, 2, ..., 7 |
%V |
以十进制数显示的 ISO 8601 星期,以星期一作为每周的第一天。 |
01, 02, ..., 53 |
%:z |
±HH:MM[:SS[.ffffff]] 形式的 UTC 偏移量(如果是简单型对象则为空字符串)。 |
(空), +00:00, -04:00, +10:30, +06:34:15, -03:07:12.345216 |
这些代码可能不是在所有平台上都可与 strftime() 方法配合使用。 ISO 8601 年份和 ISO 8601 星期指示符并不能与上面的年份和星期序号指示符相互替代。 调用 strptime() 时传入不完整或有歧义的 ISO 8601 指示符将引发 ValueError
。
对完整格式代码集的支持在不同平台上有所差异,因为 Python 要调用所在平台的 C 库的 strftime() 函数,而不同平台的差异是很常见的。 要查看你所用平台所支持的完整格式代码集,请参阅 strftime(3) 文档。 不同的平台在处理不支持的格式说明符方面也有差异。
Added in version 3.6: 增加了
%G
,%u
和%V
。Added in version 3.12: 增加了
%:z
。
结语
第一百二十篇博文写完,开心!!!!
今天,也是充满希望的一天。