Converting string into datetime
datetime.strptime
is the main routine for parsing strings into datetimes. It can handle all sorts of formats, with the format determined by a format string you give it:
from datetime import datetimedatetime_object = datetime.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
The resulting datetime
object is timezone-naive.
Links:
Python documentation for
strptime
/strftime
format strings: Python 2, Python 3strftime.org is also a really nice reference for strftime
Notes:
strptime
= "string parse time"strftime
= "string format time"- Pronounce it out loud today & you won't have to search for it again in 6 months.
Use the third party dateutil library:
from dateutil import parserparser.parse("Aug 28 1999 12:00AM") # datetime.datetime(1999, 8, 28, 0, 0)
It can handle most date formats, including the one you need to parse. It's more convenient than strptime
as it can guess the correct format most of the time.
It's very useful for writing tests, where readability is more important than performance.
You can install it with:
pip install python-dateutil
Check out strptime in the time module. It is the inverse of strftime.
$ python>>> import time>>> my_time = time.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')time.struct_time(tm_year=2005, tm_mon=6, tm_mday=1, tm_hour=13, tm_min=33, tm_sec=0, tm_wday=2, tm_yday=152, tm_isdst=-1)timestamp = time.mktime(my_time)# convert time object to datetimefrom datetime import datetimemy_datetime = datetime.fromtimestamp(timestamp)# convert time object to datefrom datetime import datemy_date = date.fromtimestamp(timestamp)