如何在 Python 中将字符串转换为 datetime 或 time 对象

文章目录

Python datetime 模块包括 datetime.strptime() 类方法,用于将字符串转换为 datetime 对象。

Python time 模块包含一个类似的函数 time.strptime(),用于将字符串转换为 struct_time() 对象。

本文将介绍如何使用 strptime() 将字符串转换为 datetime 和 time 对象。

使用 datetime.strptime() 将字符串转换为 datetime 对象

datetime.strptime 方法的语法是:

datetime.strptime(date_string, format)

该方法需要两个参数,并且必须是字符串,它会将 date_stringformat 格式进行解析,返回一个 datetime 对象。

有关 datetime.strptime 中使用的 format 格式的更多详情请参阅 Python 官方文档

将字符串转换为 datetime.datetime() 对象示例

以下示例将日期和时间字符串转换为 datetime.datetime() 对象并打印生成的对象的类型和值:

from datetime import datetime

datetime_str = '2023-02-01 22:55:26'

datetime_object = datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S')

print(type(datetime_object))  # Output: <class 'datetime.datetime'>
print(datetime_object)  # Output: 2023-02-01 22:55:26

将字符串转换为 datetime.date() 对象示例

以下示例将日期字符串转换为 datetime.date() 对象并打印结果对象的类型和值:

from datetime import datetime

date_str = '2023-02-01'

date_object = datetime.strptime(date_str, '%Y-%m-%d').date()
print(type(date_object))  # Output: <class 'datetime.date'>
print(date_object)  # Output: 2023-02-01

将字符串转换为 datetime.time() 对象示例

以下示例将时间字符串转换为 datetime.time() 对象并打印结果对象的类型和值:

from datetime import datetime

time_str = '22:55:26'
time_object = datetime.strptime(time_str, '%H:%M:%S').time()
print(type(time_object))  # Output: <class 'datetime.time'>
print(time_object)  # Output: 22:55:26

使用 time.strptime() 将字符串转换为 struct_time() 对象

time.strptime() 函数的语法是:

time.strptime(time_string[, format])

该方法返回一个 time.struct_time() 对象。 time_string 参数需要转换的时间字符串,如果未提供 format 参数,则默认为:

'%a %b %d %H:%M:%S %Y'

这个格式与 ctime() 函数返回的格式相同。

有关 time.strptime 中使用的 format 格式的更多详情请参阅 Python 官方文档

使用提供的 format 将字符串转换为 struct_time() 对象示例

以下示例将时间字符串转换为 time.struct_time() 对象并提供 format 参数。该示例打印结果对象的值:

import time

time_str = '22:33:54'
time_obj = time.strptime(time_str, '%H:%M:%S')
print(time_obj)

输出结果:

time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=33, tm_sec=54, tm_wday=0, tm_yday=1, tm_isdst=-1)

如输出所示,当您将字符串转换为 time.struct_time() 对象时,strptime() 函数对 format 参数中没有字段的其他字段格式使用默认占位符值。

使用默认格式将字符串转换为 struct_time() 对象示例

以下示例将时间字符串转换为 time.struct_time() 对象并且不提供格式参数,这意味着使用默认格式。该示例打印结果对象的值:

import time

# 默认格式 - "%a %b %d %H:%M:%S %Y"
time_str_default = 'Wed Feb 01 23:32:12 2023'
time_obj_default = time.strptime(time_str_default)
print(time_obj_default)

输出结果:

time.struct_time(tm_year=2023, tm_mon=2, tm_mday=1, tm_hour=23, tm_min=32, tm_sec=12, tm_wday=2, tm_yday=32, tm_isdst=-1)

如输出所示,当您将字符串转换为 time.struct_time() 对象时未提供 format,则使用默认格式,默认 format 中未定义的其他字段使用默认的占位符值。

当不提供 format 参数时,如果输入字符串与默认格式 '%a %b %d %H:%M:%S %Y' 不完全匹配,则会报错。

总结

本文介绍了使用 Python 将日期和时间字符串转换为 datetime 和 time 对象的方法。

datetime 和 time 模块中都有 strptime 方法,通过该方法即可将字符串转换为时间对象,注意两个模块下虽然函数的函数名相同,但返回值不同。

祝您编码愉快!


也可以看看


全国大流量卡免费领

19元月租ㆍ超值优惠ㆍ长期套餐ㆍ免费包邮ㆍ官方正品