50

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?

1
  • 6
    Check datetime.combine Commented Mar 6, 2012 at 6:32

4 Answers 4

90

Use datetime.combine:

import datetime as dt
mytime = dt.datetime.strptime('0130','%H%M').time()
mydatetime = dt.datetime.combine(dt.date.today(), mytime)
Sign up to request clarification or add additional context in comments.

1 Comment

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

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

Comments

9

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

Comments

3
import datetime
def time_tango(date, time):
    return datetime.datetime.combine(date, time)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.