datetime from string in Python, best-guessing string format

PythonDatetime

Python Problem Overview


The function to get a datetime from a string, datetime.strptime(date_string, format) requires a string format as the second argument. Is there a way to build a datetime from a string without without knowing the exact format, and having Python best-guess it?

Python Solutions


Solution 1 - Python

Use the dateutil library.

I was already using dateutil as an indispensable lib for handling timezones
(See Convert UTC datetime string to local datetime and How do I convert local time to UTC in Python?)

And I've just realized it has date parsing support:

import dateutil.parser
yourdate = dateutil.parser.parse(datestring)

(See also How do I translate a ISO 8601 datetime string into a Python datetime object?)

Solution 2 - Python

Can get away with a simple function if only checking against dates.

def get_date(s_date):
    date_patterns = ["%d-%m-%Y", "%Y-%m-%d"]

    for pattern in date_patterns:
        try:
            return datetime.datetime.strptime(s_date, pattern).date()
        except:
            pass
    
    print "Date is not in expected format: %s" %(s_date)
    sys.exit(0)

Solution 3 - Python

Back before I was a python guy, I was a perl guy. One of the things that I've always missed but haven't seen anything close to it is Date::Manip. That module can extract a good timestamp from a smattering of nibbles. I almost suspect that it's author struck a deal with the Devil.

I've run across a few things that take stabs at it in Python:

If you find anything better I'd love to hear about it though.

Solution 4 - Python

You can use datefinder ,It will detect all types of natural style of dates.

import datefinder # Module used to find different style of date with time

string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates(string_value)            
for match in matches:
    print("match found ",match)

Output

match found  2005-01-15 00:00:00
match found  2017-01-04 20:00:00

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionYarinView Question on Stackoverflow
Solution 1 - PythonYarinView Answer on Stackoverflow
Solution 2 - PythonSandeepView Answer on Stackoverflow
Solution 3 - PythonsynthesizerpatelView Answer on Stackoverflow
Solution 4 - PythonBipul singh kashyapView Answer on Stackoverflow