如何在 Python 中使用 strptime 处理毫秒

pythonserver side programmingprogramming更新于 2023/8/30 4:53:00

处理日期和时间是编程中的常见任务,Python 提供了多个模块来处理此类操作。datetime 模块是用于处理日期和时间的最常用模块之一。它提供了各种函数和类,包括 strptime() 方法,该方法允许我们将日期和时间的字符串表示形式转换为 datetime 对象。在本文中,我们将借助详细示例了解如何在 Python 中使用 strptime 处理毫秒。

了解 strptime()

datetime 模块中的 strptime() 方法用于将日期和时间的字符串表示形式解析为 datetime 对象。它需要两个参数:第一个参数是要解析的字符串,第二个参数是指定输入字符串预期格式的格式字符串。格式字符串由表示日期和时间不同部分的格式代码组成。

默认情况下,strptime() 方法不支持解析毫秒。毫秒的可用格式代码有限,并且它们与微秒通常使用的 %f 格式代码不对应。但是,我们可以通过结合使用字符串切片和整数转换来克服这一限制。

使用带有毫秒的 strptime:

要使用带有毫秒的 strptime(),我们需要遵循两个步骤:

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

  • 单独提取毫秒并将其添加到解析的 datetime 对象中。

算法

  • 导入 datetime 模块。

  • 定义表示带有毫秒的日期和时间的输入字符串。

  • 定义不带毫秒的格式字符串。

  • 解析不带毫秒的字符串使用 strptime() 从输入字符串中排除最后四个字符(毫秒),以毫秒为单位解析日期时间对象。

  • 从输入字符串中单独提取毫秒。

  • 将解析后的 datetime 对象中的微秒乘以 1000,用提取的毫秒替换微秒。

  • 打印或使用解析后的带有毫秒的 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'

# 步骤 1:解析不带毫秒的字符串
parsed_datetime = datetime.strptime(input_string[:-4], format_string)

# 步骤 2:单独提取毫秒并将其添加到解析的 datetime 对象中
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'

# 步骤 1:解析不带毫秒的字符串
parsed_datetime = datetime.strptime(input_string[:-4], format_string)

# 步骤 2:单独提取毫秒并将其添加到解析后的 datetime 对象中
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 本身不支持毫秒,但我们可以通过使用字符串切片和整数转换来克服这一限制。通过遵循两步过程,即解析不带毫秒的字符串,然后分别提取和添加毫秒,我们可以实现对带毫秒的日期和时间字符串的准确解析。


相关文章