Python time strptime() 方法



Python 的 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 小时制 (01 到 12)

  • %j - 一年中的天数 (001 到 366)

  • %m - 月份 (01 到 12)

  • %M - 分钟

  • %n - 换行符

  • %p - 根据给定的时间值,显示 am 或 pm

  • %r - 上午和下午表示法的时间

  • %R - 24 小时表示法的时间

  • %S - 秒

  • %t - 制表符

  • %T - 当前时间,等于 %H:%M:%S

  • %u - 工作日数 (1 到 7),星期一=1。警告:在 Sun Solaris 中,星期日=1

  • %U - 当前年份的周数,从第一个星期日作为第一周的第一天开始计算

  • %V - 当前年份的 ISO 8601 周数 (01 到 53),其中第 1 周是当前年份至少有 4 天的第一周,并且星期一作为一周的第一天

  • %W - 当前年份的周数,从第一个星期一作为第一周的第一天开始计算

  • %w - 工作日数 (十进制),星期日=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() 方法的返回值。但是,字符串参数必须包含指令的所有字段,并且顺序相同。

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 参数传递给方法,并且字符串参数不包含默认指令中存在的所有字段,则方法会引发 ValueError。让我们看下面的一个示例。

import time

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

Traceback (most recent call last):
  File "d:\Tutorialspoint\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'
python_date_time.htm
广告