给定一个类似"Hours:5 Minutes:34 Seconds:28"
或"Minutes:34 Seconds:28"
的字符串,是否有任何pythonic方法将其转换为datetime
对象?如果有更简单的方法,我不想使用正则表达式。
答案 0 :(得分:2)
您可以使用datetime.strptime()
将字符串转换为datetime
对象:
>>> from datetime import datetime
>>> date_object = datetime.strptime('Hours:5 Minutes:34 Seconds:28', 'Hours:%H Minutes:%M Seconds:%S')
>>> date_object
datetime.datetime(1900, 1, 1, 5, 34, 28)
# ^ ^ ^
# Hour Min Seconds
由于您在字符串中没有日期,因此它将保留默认日期1 Jan 1990
。我认为你需要的是datetime.time()
,它返回time
个对象,其中包含与datetime
个对象相同的小时,分钟,秒和微秒。 (tzinfo是None
)。例如:
>>> date_object.time()
datetime.time(5, 34, 28)
# ^ ^ ^
# Hour Min Seconds
date_object
之前创建的datetime
类型。
答案 1 :(得分:2)
是的,有。你可以这样做:
import time
datetime_string = "Hours:5 Minutes:34 Seconds:28"
if "Hours" in datetime_string:
datetime_object = time.strptime(datetime_string, "Hours:%H Minutes:%M Seconds:%S")
elif "Minutes" in datetime_string:
datetime_object = time.strptime(datetime_string, "Minutes:%M Seconds:%S")
else:
datetime_object = time.strptime(datetime_string, "Seconds:%S")
注意:当您创建日期时间对象时,您未提供的值将使用默认值填充。因此,如果datetime_string
仅包含秒,则会设置小时和分钟到0
。