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 本身不支持毫秒,但我们可以通过使用字符串切片和整数转换来克服此限制。通过遵循解析不带毫秒的字符串,然后单独提取和添加毫秒的两步过程,我们可以实现对带毫秒的日期和时间字符串的精确解析。