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_string
按 format
格式进行解析,返回一个 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 方法,通过该方法即可将字符串转换为时间对象,注意两个模块下虽然函数的函数名相同,但返回值不同。
祝您编码愉快!