43

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?

Sunderam Dubey
  • 1
  • 11
  • 20
  • 40
MFB
  • 19,017
  • 27
  • 72
  • 118

4 Answers4

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
  • 1
    A 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