Python time.strptime() 方法



Python time strptime() 方法根据格式解析表示时间的字符串,可以是 UTC 时间还是本地时间。

该方法接受两个参数:一个是要解析为字符串的时间,另一个参数是指定的格式。返回值将作为对象struct_time获取。

format 参数使用与 strftime() 相同的指令;它默认为 “%a %b %d %H:%M:%S %Y” 与 ctime() 返回的格式匹配。

以下指令可以嵌入到格式字符串中 -

命令

  • %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 - 时区、名称或缩写
  • %% - 文本 % 字符

如果无法根据格式解析字符串,或者解析后字符串有多余的数据,则会引发 ValueError。

语法

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


 time.strptime(string[, format])

参数

  • string − 这是字符串格式的时间,将根据给定格式进行解析。
  • format − 这是用于解析给定字符串的指令。

返回值

此返回值与 gmtime() 或 localtime() 返回的struct_time。

以下示例显示了 Python strptime() 方法的用法。


import time

struct_time = time.strptime("30 Nov 00", "%d %b %y")
print("Returned object:", struct_time)

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

Returned object: time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)

如果没有值作为 format 参数传递给此方法,则格式将默认为 “%a %b %d %H:%M:%S %Y”,使其类似于 ctime() 方法的返回值。但是,string 参数必须包含指令的所有字段,并且顺序相同。


import time

string = "Thu Nov 30 17:34:56 2000"
struct_time = time.strptime(string)
print("Returned object:", struct_time)

输出

Returned object: time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=17, tm_min=34, tm_sec=56, tm_wday=3, tm_yday=335, tm_isdst=-1)

如果没有值作为 format 参数传递给方法,并且 string 参数不包含 default 指令中存在的所有字段,则该方法将引发 ValueError。让我们看一个示例,演示下面的相同内容。


import time

string = "30 Nov 00"
struct_time = time.strptime(string)
print("returned tuple:", struct_time)

输出

Traceback (most recent call last):
File "d:\qikepu\Programs\Python Time Programs\strptimedemo.py", line 4, in
struct_time = time.strptime(string)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2544.0_x64__qbz5n2kfra8p0\lib\_strptime.py", line 562, in _strptime_time
tt = _strptime(data_string, format)[0]
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2544.0_x64__qbz5n2kfra8p0\lib\_strptime.py", line 349, in _strptime
raise ValueError("time data %r does not match format %r" %
ValueError: time data '30 Nov 00' does not match format '%a %b %d %H:%M:%S %Y'