Python strftime()

strftime() 方法使用 日期、时间或日期时间对象返回表示日期和时间的字符串


示例 1:使用 strftime() 将日期时间转换为字符串

下面的程序将包含当前日期和时间datetime 对象转换为不同的字符串格式。


from datetime import datetime

now = datetime.now() # current date and time

year = now.strftime("%Y")
print("year:", year)

month = now.strftime("%m")
print("month:", month)

day = now.strftime("%d")
print("day:", day)

time = now.strftime("%H:%M:%S")
print("time:", time)

date_time = now.strftime("%m/%d/%Y, %H:%M:%S")
print("date and time:",date_time)	

运行程序时,输出将如下所示


year: 2018
month: 12
day: 24
time: 04:59:31
date and time: 12/24/2018, 04:59:31

这里,yeardaytimedate_time 是字符串,而 nowdatetime 对象。


strftime() 如何工作?

在上面的程序中,%Y%m%d 等是格式代码。strftime() 方法将一个或多个格式代码作为参数,并根据它返回一个格式化的字符串。

  1. 我们从 datetime 模块导入了 datetime 类。这是因为 datetime 类的对象可以访问 strftime() 方法。
     
    Import datetime object
  2. 包含当前日期和时间的 datetime 对象存储在 now 变量中。
     
    Python Format Code
  3. strftime() 方法可用于创建格式化字符串。
     
    Python Format Code
  4. 您传递给 strftime() 方法的字符串可能包含多个格式代码。
     
    Python Format Codes

示例 2:从时间戳创建字符串


from datetime import datetime

timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)

print("Date time object:", date_time)

d = date_time.strftime("%m/%d/%Y, %H:%M:%S")
print("Output 2:", d)	

d = date_time.strftime("%d %b, %Y")
print("Output 3:", d)

d = date_time.strftime("%d %B, %Y")
print("Output 4:", d)

d = date_time.strftime("%I%p")
print("Output 5:", d)

运行程序后,输出将是

Date time object: 2018-06-12 09:55:22
Output 2: 06/12/2018, 09:55:22
Output 3: 12 Jun, 2018
Output 4: 12 June, 2018
Output 5: 09AM

格式代码列表

下表显示了您可以传递给 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, ... 12
%p 区域设置的 AM 或 PM。 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 2013
%x 区域设置的适当日期表示。 09/30/13
%X 区域设置的适当时间表示。 07:06:05
%% 字面量 '%' 字符。 %

示例 3:区域设置的适当日期和时间


from datetime import datetime

timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)

d = date_time.strftime("%c")
print("Output 1:", d)	

d = date_time.strftime("%x")
print("Output 2:", d)

d = date_time.strftime("%X")
print("Output 3:", d)

运行程序后,输出将是


Output 1: Tue Jun 12 09:55:22 2018
Output 2: 06/12/18
Output 3: 09:55:22

格式代码 %c%x%X 用于区域设置的适当日期和时间表示。


我们还建议您查看Python strptime()strptime() 方法从字符串创建 datetime 对象。

视频:Python 中的日期和时间

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战