python - Converting string into datetime

ID : 263

viewed : 64

Tags : pythondatetimepython

Top 5 Answer for python - Converting string into datetime

vote vote

98

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 datetime  datetime_object = datetime.strptime('Jun 1 2005  1:33PM', '%b %d %Y %I:%M%p') 

The resulting datetime object is timezone-naive.

Links:

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.

Also, as seen in a comment made by @Izkata, if you want a date instead of a datetime, going through datetime handles it nicely: datetime.strptime('Jun 1 2005', '%b %d %Y').date() == date(2005, 6, 1)

vote vote

81

Use the third party dateutil library:

from dateutil import parser parser.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 
vote vote

71

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 datetime from datetime import datetime my_datetime = datetime.fromtimestamp(timestamp) # convert time object to date from datetime import date my_date = date.fromtimestamp(timestamp) 
vote vote

63

Python >= 3.7

to convert YYYY-MM-DD string to datetime object, datetime.fromisoformat could be used.

from datetime import datetime  date_string = "2012-12-12 10:10:10" print (datetime.fromisoformat(date_string)) 2012-12-12 10:10:10 
vote vote

60

I have put together a project that can convert some really neat expressions. Check out timestring.

Here are some examples below:

pip install timestring
>>> import timestring >>> timestring.Date('monday, aug 15th 2015 at 8:40 pm') <timestring.Date 2015-08-15 20:40:00 4491909392> >>> timestring.Date('monday, aug 15th 2015 at 8:40 pm').date datetime.datetime(2015, 8, 15, 20, 40) >>> timestring.Range('next week') <timestring.Range From 03/10/14 00:00:00 to 03/03/14 00:00:00 4496004880> >>> (timestring.Range('next week').start.date, timestring.Range('next week').end.date) (datetime.datetime(2014, 3, 10, 0, 0), datetime.datetime(2014, 3, 14, 0, 0)) 

Top 3 video Explaining python - Converting string into datetime

Related QUESTION?