蟒蛇datetime
and time
模块均包括strptime()
将字符串转换为对象的类方法。
在本文中,您将使用strptime()
将字符串转换为datetime
and struct_time()
对象。
语法为datetime.strptime()
方法是:
datetime.strptime(date_string, format)
The datetime.strptime()
方法返回一个datetime
匹配的对象日期字符串解析为format。两个参数都是必需的并且必须是字符串。
有关使用的格式指令的详细信息datetime.strptime()
,请参阅strftime() and strptime()格式代码在 Python 文档中。
以下示例将日期和时间字符串转换为datetime.datetime()
对象,并打印结果对象的类名和值:
from datetime import datetime
datetime_str = '09/19/22 13:55:26'
datetime_object = datetime.strptime(datetime_str, '%m/%d/%y %H:%M:%S')
print(type(datetime_object))
print(datetime_object) # printed in default format
输出是:
<class 'datetime.datetime'>
2022-09-19 13:55:26
以下示例将日期字符串转换为datetime.date()
对象,并打印结果对象的类类型和值:
from datetime import datetime
date_str = '09-19-2022'
date_object = datetime.strptime(date_str, '%m-%d-%Y').date()
print(type(date_object))
print(date_object) # printed in default format
输出是:
<class 'datetime.date'>
2022-09-19
以下示例将时间字符串转换为datetime.time()
对象,并打印结果对象的类类型和值:
from datetime import datetime
time_str = '13::55::26'
time_object = datetime.strptime(time_str, '%H::%M::%S').time()
print(type(time_object))
print(time_object)
输出是:
<class 'datetime.time'>
13:55:26
以下示例将德语区域设置日期字符串转换为datetime.datetime()
对象,并打印结果对象的类类型和值:
from datetime import datetime
import locale
locale.setlocale(locale.LC_ALL, 'de_DE')
date_str_de_DE = '16-Dezember-2022 Freitag' # de_DE locale
datetime_object = datetime.strptime(date_str_de_DE, '%d-%B-%Y %A')
print(type(datetime_object))
print(datetime_object)
输出是:
<class 'datetime.datetime'>
2022-12-16 00:00:00
请注意,生成的对象不包含输入字符串中的工作日名称,因为datetime.datetime()
对象仅包含十进制数形式的工作日。
语法为time.strptime()
方法是:
time.strptime(time_string[, format])
The time.strptime()
方法返回一个time.struct_time()
匹配的对象时间字符串解析为format. The 时间字符串是必需的,并且两个参数都必须是字符串。如果format未提供,默认为:
'%a %b %d %H:%M:%S %Y'
这对应于返回的格式ctime()
功能。
格式指令是相同的time.strptime()
and time.strftime()
。了解更多关于格式指令为了time
Python 文档中的模块。
以下示例将时间字符串转换为time.struct_time()
对象通过提供format参数,并打印结果对象的值:
import time
time_str = '11::33::54'
time_obj = time.strptime(time_str, '%H::%M::%S')
print("A time.struct_time object that uses the format provided:")
print(time_obj)
输出是:
A time.struct_time object that uses the format provided:
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1,
tm_hour=11, tm_min=33, tm_sec=54, tm_wday=0, tm_yday=1,
tm_isdst=-1)
如输出所示,当您将字符串转换为time.struct_time()
对象,即strptime()
方法对未在 中定义的任何格式指令使用占位符值format争论。
如果您不提供format将时间字符串转换为时间字符串时的参数time.struct_time()
对象,则使用默认格式,如果输入字符串与以下默认格式不完全匹配,则会发生错误:
'%a %b %d %H:%M:%S %Y'
以下示例将时间字符串转换为time.struct_time()
对象没有format提供的参数,并打印结果对象的值:
import time
# default format - "%a %b %d %H:%M:%S %Y"
time_str_default = 'Mon Dec 12 14:55:02 2022'
time_obj_default = time.strptime(time_str_default)
print("A time.struct_time object that uses the default format:")
print(time_obj_default)
输出是:
A time.struct_time object that uses the default format:
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=12,
tm_hour=14, tm_min=55, tm_sec=2, tm_wday=0, tm_yday=346,
tm_isdst=-1)
如输出所示,当您将字符串转换为time.struct_time()
对象,即strptime()
方法对未在 中定义的任何格式指令使用占位符值format参数或默认格式(如果没有)format提供。
如果输入的字符串无法被解析strptime()
使用提供的格式,然后ValueError
被提出。您可以使用try
块来测试解析错误,以及except
块打印结果。这ValueError
当您使用时收到的消息strptime()
方法清楚地解释了解析错误的根本原因。以下示例演示了一些常见错误,例如额外数据和格式不匹配:
from datetime import datetime
import time
datetime_str = '09/19/18 13:55:26'
try:
datetime_object = datetime.strptime(datetime_str, '%m/%d/%y')
except ValueError as ve1:
print('ValueError 1:', ve1)
time_str = '99::55::26'
try:
time_object = time.strptime(time_str, '%H::%M::%S')
except ValueError as ve2:
print('ValueError 2:', ve2)
输出是:
ValueError 1: unconverted data remains: 13:55:26
ValueError 2: time data '99::55::26' does not match format '%H::%M::%S'
在本教程中,您将日期和时间字符串转换为datetime
and time
使用 Python 的对象。继续学习更多内容Python教程.