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+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告