只解析时间,并将日期设置为今天?

时间:2017-01-20 20:43:28

标签: python

我正在尝试将时间字符串转换为日期为今天日期的datetime对象。但是,我只有一个时间字符串,它的replace()方法似乎不起作用。

from datetime import datetime, time,date
timestr = "9:30"
startTime = datetime.strptime(timestr,"%H:%M")
startTime.replace(year=datetime.now().year, month=datetime.now().month, day=datetime.now().day)
print startTime
>>> 1900-01-01 09:30:00

我想:

2017-01-20 09:30:00

3 个答案:

答案 0 :(得分:1)

replace更好combine

timestr = "9:30"
startTime = datetime.strptime(timestr,"%H:%M")
d = datetime.combine(datetime.today(), startTime.time())

答案 1 :(得分:0)

replace无法就地工作。不要忽略返回值,将其分配回来:

startTime = startTime.replace(year=datetime.now().year, month=datetime.now().month, day=datetime.now().day)

你得到:

2017-01-20 09:30:00

答案 2 :(得分:-1)

这是使用另一个库的另一种解决方案。

import pendulum
timestr = "9:30"
dt = pendulum.parse(timestr)
<Pendulum [2017-01-20T09:30:00+00:00]>

或者

dt = pendulum.parse(timestr).to_datetime_string()
'2017-01-20 09:30:00'