Delta时间字符串到datetime对象

时间:2016-11-08 12:58:19

标签: python datetime

给定一个类似"Hours:5 Minutes:34 Seconds:28""Minutes:34 Seconds:28"的字符串,是否有任何pythonic方法将其转换为datetime对象?如果有更简单的方法,我不想使用正则表达式。

2 个答案:

答案 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个对象相同的小时,分​​钟,秒和微秒。 (tzinfoNone)。例如:

>>> 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