16

How can I parse a string like "01-Jan-1995" to a Python datetime object?

davidism
  • 121,510
  • 29
  • 395
  • 339
Charlie Epps
  • 3,595
  • 9
  • 33
  • 38

3 Answers3

24

On the whole you'd parse date and time strings with the strptime functions in time or datetime modules. Your example could be parsed with:

import datetime
datetime.datetime.strptime("01-Jan-1995", "%d-%b-%Y")

Note that parsing month names is locale-dependent. This table shows the directives for parsing various formats of dates and times.

EricP
  • 3,395
  • 3
  • 33
  • 46
Tuure Laurinolli
  • 4,016
  • 1
  • 22
  • 21
10

dateutil can parse this sort of format without you even having to define custom date formats. Just install it with:

pip install python-dateutil

Then use it:

import dateutil.parser
dateutil.parser.parse('01-Jan-1995').date()
Soviut
  • 88,194
  • 49
  • 192
  • 260
  • 2
    +1 for python-dateutil. It can even parse datestrings without you having to tell it the format. – unutbu Nov 11 '09 at 18:44
1

If you need to parse natural language date and time strings, consider parsedatetime (and this answer).

Community
  • 1
  • 1
Adam Matan
  • 128,757
  • 147
  • 397
  • 562