Python 中如何使用 strptime 處理毫秒


在程式設計中,處理日期和時間是一項常見的任務,Python 提供了多個模組來處理此類操作。datetime 模組是用於操作日期和時間的常用模組之一。它提供了各種函式和類,包括 strptime() 方法,該方法允許我們將日期和時間的字串表示形式轉換為 datetime 物件。在本文中,我們將藉助詳細示例瞭解如何在 Python 中使用 strptime 處理毫秒。

瞭解 strptime()

datetime 模組中的 strptime() 方法用於將日期和時間的字串表示形式解析為 datetime 物件。它接受兩個引數:第一個引數是要解析的字串,第二個引數是格式字串,用於指定輸入字串的預期格式。格式字串由表示日期和時間不同部分的格式程式碼組成。

預設情況下,strptime() 方法不支援解析毫秒。可用的毫秒格式程式碼有限,並且不對應於用於微秒的常用 %f 格式程式碼。但是,我們可以透過結合使用字串切片和整數轉換來克服此限制。

使用 strptime 處理毫秒

要使用 strptime() 處理毫秒,我們需要遵循一個兩步過程

  • 使用 strptime() 解析不帶毫秒的字串。

  • 單獨提取毫秒並將其新增到已解析的 datetime 物件中。

演算法

  • 匯入 datetime 模組。

  • 定義表示帶毫秒的日期和時間的輸入字串。

  • 定義不帶毫秒的格式字串。

  • 透過從輸入字串中排除最後四個字元(毫秒),使用 strptime() 解析不帶毫秒的字串。

  • 從輸入字串中單獨提取毫秒。

  • 透過將提取的毫秒乘以 1000,用提取的毫秒替換已解析的 datetime 物件中的微秒。

  • 列印或使用帶毫秒的已解析 datetime 物件。

示例 1:解析帶毫秒的日期和時間字串

假設我們有一個格式為 '2023-05-29 12:34:56.789' 的日期和時間字串,並且我們希望將其解析為帶毫秒的 datetime 物件。我們將在下面的示例中實現這一點。

在下面的示例中,我們首先透過從輸入字串中排除最後四個字元(毫秒),使用 strptime() 解析不帶毫秒的字串。然後,我們從輸入字串中單獨提取毫秒,並將其乘以 1000 以將其轉換為微秒。最後,我們用提取的毫秒替換已解析的 datetime 物件中的微秒。

from datetime import datetime

input_string = '2023-05-29 12:34:56.789'
format_string = '%Y-%m-%d %H:%M:%S'

# Step 1: Parse the string without milliseconds
parsed_datetime = datetime.strptime(input_string[:-4], format_string)

# Step 2: Extract milliseconds separately and add them to the parsed datetime object
milliseconds = int(input_string[-3:])
parsed_datetime = parsed_datetime.replace(microsecond=milliseconds * 1000)

print(parsed_datetime)

輸出

2023-05-29 12:34:56.789000

示例 2:解析帶毫秒的時間字串

讓我們考慮一個場景,其中我們有一個格式為 '12:34:56.789' 的時間字串,並且我們希望將其解析為帶毫秒的 datetime 物件。我們將在下面的示例中實現這一點。

在下面的示例中,我們遵循與之前相同的兩步過程。我們透過從輸入字串中排除最後四個字元(毫秒),使用 strptime() 解析不帶毫秒的字串。然後,我們單獨提取毫秒並將其新增到已解析的 datetime 物件中。

from datetime import datetime

input_string = '12:34:56.789'
format_string = '%H:%M:%S'

# Step 1: Parse the string without milliseconds
parsed_datetime = datetime.strptime(input_string[:-4], format_string)

# Step 2: Extract milliseconds separately and add them to the parsed datetime object
milliseconds = int(input_string[-3:])
parsed_datetime = parsed_datetime.replace(microsecond=milliseconds * 1000)

print(parsed_datetime)

輸出

1900-01-01 12:34:56.789000

結論

在本文中,我們討論瞭如何在 Python 中使用 strptime 處理毫秒。儘管 strptime 本身不支援毫秒,但我們可以透過使用字串切片和整數轉換來克服此限制。透過遵循解析不帶毫秒的字串,然後單獨提取和新增毫秒的兩步過程,我們可以實現對帶毫秒的日期和時間字串的精確解析。

更新於: 2023-10-13

4K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.