原文: https://www.programiz.com/python-programming/datetime/strftime

在本文中,您将学习如何将日期,时间和日期时间对象转换为其等效的字符串(借助示例)

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


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

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

  1. from datetime import datetime
  2. now = datetime.now() # current date and time
  3. year = now.strftime("%Y")
  4. print("year:", year)
  5. month = now.strftime("%m")
  6. print("month:", month)
  7. day = now.strftime("%d")
  8. print("day:", day)
  9. time = now.strftime("%H:%M:%S")
  10. print("time:", time)
  11. date_time = now.strftime("%m/%d/%Y, %H:%M:%S")
  12. print("date and time:",date_time)

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

  1. year: 2018
  2. month: 12
  3. day: 24
  4. time: 04:59:31
  5. date and time: 12/24/2018, 04:59:31

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


strftime()如何工作?

在上述程序中,%Y%m%d等是格式代码。strftime()方法采用一个或多个格式代码作为参数,并基于该代码返回格式化的字符串。

  1. 我们从datetime模块导入了datetime类。 这是因为datetime类的对象可以访问strftime()方法。
    Python `strftime()` - 图1

  2. 包含当前日期和时间的datetime对象存储在now变量中。
    Python `strftime()` - 图2

  3. strftime()方法可用于创建格式化的字符串。
    Python `strftime()` - 图3

  4. 您传递给strftime()方法的字符串可能包含多个格式代码。
    Python `strftime()` - 图4


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

  1. from datetime import datetime
  2. timestamp = 1528797322
  3. date_time = datetime.fromtimestamp(timestamp)
  4. print("Date time object:", date_time)
  5. d = date_time.strftime("%m/%d/%Y, %H:%M:%S")
  6. print("Output 2:", d)
  7. d = date_time.strftime("%d %b, %Y")
  8. print("Output 3:", d)
  9. d = date_time.strftime("%d %B, %Y")
  10. print("Output 4:", d)
  11. d = date_time.strftime("%I%p")
  12. print("Output 5:", d)

运行该程序时,输出为:

  1. Date time object: 2018-06-12 09:55:22
  2. Output 2: 06/12/2018, 09:55:22
  3. Output 3: 12 Jun, 2018
  4. Output 4: 12 June, 2018
  5. 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
%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:语言环境的适当日期和时间

  1. from datetime import datetime
  2. timestamp = 1528797322
  3. date_time = datetime.fromtimestamp(timestamp)
  4. d = date_time.strftime("%c")
  5. print("Output 1:", d)
  6. d = date_time.strftime("%x")
  7. print("Output 2:", d)
  8. d = date_time.strftime("%X")
  9. print("Output 3:", d)

当你运行程序时,输出将是:

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

格式代码%c%x%X用于语言环境的适当日期和时间表示。


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