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
?
Asked
Active
Viewed 1e+01k times
43

Sunderam Dubey
- 1
- 11
- 20
- 40

MFB
- 19,017
- 27
- 72
- 118
-
5Check `datetime.combine` – eumiro Mar 06 '12 at 06:32
4 Answers
81
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
- 163,903
- 24
- 228
- 223
-
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
14
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,589
- 14
- 14
10
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
- 16,964
- 16
- 76
- 97
2
import datetime
def time_tango(date, time):
return datetime.datetime.combine(date, time)

Mona Jalal
- 34,860
- 64
- 239
- 408