Python time.strftime() 方法



与 Python time asctime() 方法类似,strftime() 方法还将以 UTC 或本地时间表示的元组或struct_time转换为以下形式的 24 个字符的字符串:'Mon Jan 9 10:51:77 2023'。但是,当 strftime() 方法以用户友好的方式格式化字符串输出时,就会出现对比。

此方法接受两个参数:一个是表示特定时间的 Tuples 或对象,另一个是指令。指令用于设置日期和时间字符串的格式。它们使用“%”符号表示,后跟代表时间特定元素的缩写。以下指令可以嵌入到格式字符串中 -

指令

  • %a - 缩写的工作日名称
  • %A - 完整的工作日名称
  • %b - 缩写月份名称
  • %B - 完整的月份名称
  • %c - 首选日期和时间表示形式
  • %C - 世纪数(年份除以 100,范围为 00 到 99)
  • %d - 每月的日期(01 到 31)
  • %D - 与 %m/%d/%y 相同
  • %e - 每月的日期(1 到 31)
  • %g - 类似于 %G,但没有世纪
  • %G - 对应于 ISO 周数的 4 位数字年份(请参阅 %V)。
  • %h - 与 %b 相同
  • %H - 小时,使用 24 小时制(00 到 23)
  • %I - 小时,使用 12 小时制(1 到 12)
  • %j - 一年中的某一天(001 到 366)
  • %m - 月份(01 到 12)
  • %M - 分钟
  • %n - 换行符
  • %p - 根据给定的时间值,AM 或 PM
  • %r - 以 A.M. 和 P.M. 表示法中的时间
  • %R - 以 24 小时表示法的时间
  • %S - 秒
  • %t - 制表符
  • %T - 当前时间,等于 %H:%M:%S
  • %u - 工作日的数字(1 到 7),星期一 = 1。警告:在 Sun Solaris Sunday = 1 中
  • %U - 当前年份的周数,从第一个星期日开始,作为第一周的第一天
  • %V - 当前年份的 ISO 8601 周数(01 到 53),其中第 1 周是当年中至少有 4 天的第一周,星期一是该周的第一天
  • %W - 当前年份的周数,从第一个星期一开始作为第一周的第一天
  • %w - 以小数表示的星期几,Sunday=0
  • %x - 不带时间的首选日期表示形式
  • %X - 不带日期的首选时间表示
  • %y - 没有世纪的年份(范围 00 到 99)
  • %Y - 年份(包括世纪)
  • %Z 或 %z - 时区、名称或缩写
  • %% - 文本 % 字符

注意:某些平台可能支持其他指令,但只有此处列出的指令具有 ANSI C 标准化的含义。

语法

以下是 Python time strftime() 方法的语法 -


 time.strftime(format[, t])

参数

  • t − 这是要格式化的时间(以秒数为单位)。
  • format − 这是用于格式化给定时间的指令。

返回值

此方法返回表示日期和时间的格式化字符串。

以下示例显示了 Python time strftime() 方法的用法。我们使用 Tuples 表示时间,并将其作为参数传递给此方法;多个指令用于以 String 的形式格式化返回值,以易于理解的方式表示日期和时间。


import time

t = (2009, 2, 17, 17, 3, 38, 1, 48, 0)

print(time.strftime("%b %d %Y %H:%M:%S", t))

当我们运行上述程序时,它会产生以下结果——

Feb 17 2009 17:03:38

我们可以直接使用此方法使用某些指令以标准格式(DD/MM/YY 和 HH:MM:SS)返回日期和时间,而不是将数据和时间排列成字符串。

在这里,我们将指令 “%D 和 %T” 作为格式参数值传递给该方法;而不传递任何表示时间的特定 Tuples 或 Object。默认情况下,此方案将使该方法考虑当前本地时间;,它会返回其标准日期和时间格式。


import time

print("Current date and time:")
print(time.strftime("%D%n%T"))

如果我们编译并运行上面的程序,输出显示如下 -

Current date and time:
01/11/23
11:04:40

此方法还返回 UTC 时间。

在此示例中,我们使用 gmtime() 方法通过不向其传递任何参数来获取当前 UTC 时间。此返回值作为参数传递给表示时间的 strftime() 方法,该方法使用指令 “%B”、“%d”、“%Y” 来格式化日期,并使用 “%H:%M:%S” 来格式化时间。


import time

t = time.gmtime()
print(time.strftime("Date: %B %dth, %Y%nTime: %H:%M:%S", t))

上述程序的输出显示如下 -

Date: January 11th, 2023
Time: 06:37:39

可以通过将 time() 方法获取的返回值作为参数传递给 gmtime() 或 strftime() 等方法来格式化它。

在以下示例中,我们使用 time() 方法获取当前时间(以秒为单位)。这些秒数作为参数传递给 gmtime() 方法,以使用 struct_time 对象的各种字段来表示它,以指示时间元素。但是,作为额外的步骤,我们也可以尝试通过将它作为参数传递给 strftime() 方法来简化此对象的结构。


import time

t = time.time()
print("Current UTC Time in seconds:", t)

#Formatting the seconds obtained from time() using gmtime()
fmt = time.gmtime(t)
print("Current Formatted UTC Time:", fmt)

#Formatting the object obtained from gmtime() using strftime()
strf = time.strftime("%D %T", fmt)
print("Current Formatted UTC Time:",strf)

输出

Current UTC Time in seconds: 1673435474.7526345
Current Formatted UTC Time: time.struct_time(tm_year=2023, tm_mon=1, tm_mday=11, tm_hour=11, tm_min=11, tm_sec=14, tm_wday=2, tm_yday=11, tm_isdst=0)
Current Formatted UTC Time: 01/11/23 11:12:11