在本文中,您将学习如何将date、time和datetime对象转换为它的等效字符串(通过示例)
strftime()方法使用date,time或datetime对象返回表示日期和时间的字符串。
下面的程序将datetime包含当前日期和时间的对象转换 为不同格式的字符串。
from datetime import datetime now = datetime.now() # 当前的日期和时间 year = now.strftime("%Y") print("年:", year) month = now.strftime("%m") print("月:", month) day = now.strftime("%d") print("日:", day) time = now.strftime("%H:%M:%S") print("时间:", time) date_time = now.strftime("%m/%d/%Y, %H:%M:%S") print("日期和时间:",date_time)
当您运行程序时,输出将如下所示:
年: 2020 月: 04 日: 13 时间: 17:35:22 日期和时间: 04/13/2020, 17:35:22
在这里,year,day,time和date_time是字符串,而now是一个datetime对象。
在上述程序中,%Y,%m,%d等是格式码。strftime()方法采用一个或多个格式代码作为参数,并基于该方法返回格式化的字符串。
我们datetime从datetime模块导入了类。这是因为datetime类的对象可以访问strftime()方法。
datetime包含当前日期和时间的对象存储在now变量中。
strftime()方法可用于创建格式化的字符串。
您传递给strftime()方法的字符串可能包含多个格式代码。
from datetime import datetime timestamp = 1578797322 date_time = datetime.fromtimestamp(timestamp) print("日期时间对象:", date_time) d = date_time.strftime("%m/%d/%Y, %H:%M:%S") print("输出 2:", d) d = date_time.strftime("%d %b, %Y") print("输出 3:", d) d = date_time.strftime("%d %B, %Y") print("输出 4:", d) d = date_time.strftime("%I%p") print("输出 5:", d)
运行该程序时,输出为:
日期时间对象: 2020-01-12 10:48:42 输出 2: 01/12/2020, 10:48:42 输出 3: 12 Jan, 2020 输出 4: 12 January, 2020 输出 5: 10AM
下表显示了您可以传递给该strftime()方法的所有代码。
指令 | 含义 | 例如 |
%a | 工作日名称的缩写。 | Sun, Mon, ... |
%A | 工作日全名。 | Sunday, Monday, .. |
%w | 工作日为十进制数字。 | 0,1,...,6 |
%d | 月份中的一天,以零填充的十进制数表示。 | 01,02,...,31 |
%-d | 以十进制数表示的月份中的一天。 | 1,2,...,30 |
%b | 月份的缩写。 | Jan, Feb, ..., Dec |
%B | 完整的月份名称。 | January, February, ... |
%m | 月份为零填充的十进制数字。 | 01、02,...,12 |
%-m | 以十进制数表示的月份。 | 1,2,...,12 |
%y | 无世纪的年份,为零填充的十进制数字。 | 00、01,...,99 |
%-y | 没有世纪的年份作为十进制数字。 | 0,1,...,99 |
%Y | 以世纪作为十进制数字的年份。 | 2013、2019等 |
%H | 小时(24小时制),为补零的十进制数字。 | 00、01,...,23 |
%-H | 小时(24小时制)为十进制数字。 | 0,1,...,23 |
%I | 小时(12小时制),为零填充的十进制数字。 | 01、02,...,12 |
%-I | 小时(12小时制)为十进制数字。 | 1 2 2 |
%p | 语言环境的上午或下午。 | AM,PM |
%M | 分钟,为零填充的十进制数字。 | 00、01,...,59 |
%-M | 以十进制数字表示。 | 0,1,...,59 |
%S | 第二个为零填充的十进制数。 | 00、01,...,59 |
%-S | 第二个十进制数字。 | 0,1,...,59 |
%f | 微秒,十进制数,在左侧补零。 | 000000-999999 |
%z | UTC偏移量,格式为+ HHMM或-HHMM。 | |
%Z | 时区名称。 | |
%j | 一年中的一天,以零填充的十进制数字表示。 | 001,002,...,366 |
%-j | 一年中的天,以十进制数字表示。 | 1,2,...,366 |
%U | 一年中的第几周(星期日为一周的第一天)。在第一个星期日之前的新的一年中的所有天都被视为在第0周。 | 00、01,...,53 |
%W | 一年中的第几周(星期一为一周中的第一天)。第一个星期一之前的新的一年中的所有天均视为在第0周。 | 00、01,...,53 |
%c | 语言环境的适当日期和时间表示。 | Mon Sep 30 07:06:05 2019 |
%x | 语言环境的适当日期表示形式。 | 13/9/30 |
%X | 语言环境的适当时间表示形式。 | 07:06:05 |
%% | 文字“%”字符。 | % |
from datetime import datetime timestamp = 1578797322 date_time = datetime.fromtimestamp(timestamp) d = date_time.strftime("%c") print("输出 1:", d) d = date_time.strftime("%x") print("输出 2:", d) d = date_time.strftime("%X") print("输出 3:", d)
运行该程序时,输出为:
输出 1: Sun Jan 12 10:48:42 2020 输出 2: 01/12/20 输出 3: 10:48:42
格式代码%c,%x以及%X用于语言环境的适当的日期和时间表示。
我们还建议您检查Python strptime()。strptime()方法从字符串创建datetime对象。