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
廣告