I have a web form which has 2 input fields, "StartDate" and "StartTime". I convert the StartDate field's string into a Python datetime object, no problem. The StartTime field is passed in as a string in the form "0130" for 1:30am. What is the best way to convert the StartTime string and combine it with the StartDate datetime object so that both are stored as a single datetime? Any clues would be great!
Asked
Active
Viewed 7.0k times
30
MFB
- 17,535
- 25
- 70
- 115
-
4Check `datetime.combine` – eumiro Mar 06 '12 at 06:32
4 Answers
63
Use datetime.combine:
import datetime as dt
mytime = dt.datetime.strptime('0130','%H%M').time()
mydatetime = dt.datetime.combine(dt.date.today(), mytime)
mechanical_meat
- 155,494
- 24
- 217
- 209
-
1A note on readability: When the module name and class name are the same (in this case `datetime`) I prefer to use an alias to clarify. – mechanical_meat Mar 06 '12 at 06:38
10
If you can load the time into a datetime.time, you can use the following code
import datetime
dt = datetime.datetime(2012, 2, 12)
tm = datetime.time(1, 30)
combined = dt.combine(dt, tm)
print(combined)
Output
2012-02-12 01:30:00
gfortune
- 2,499
- 13
- 13
8
Just a short version:
from datetime import datetime
print datetime.combine(datetime.strptime("5 Mar 12", "%d %b %y"), datetime.strptime("0130","%H%M").time())
Output
2012-03-05 01:30:00
jerrymouse
- 15,566
- 15
- 69
- 87
0
import datetime
def time_tango(date, time):
return datetime.datetime.combine(date, time)
Mona Jalal
- 29,571
- 61
- 202
- 359