Key Features • How To Use • Installation • Common use cases • You may also like... • License
- Support for almost every existing date format: absolute dates,
relative dates (
"two weeks ago"
or"tomorrow"
), timestamps, etc. - Support for more than 200 language locales.
- Language autodetection
- Customizable behavior through settings.
- Support for non-Gregorian calendar systems.
- Support for dates with timezones abbreviations or UTC offsets
(
"August 14, 2015 EST"
,"21 July 2013 10:15 pm +0500"
...) - Search dates in longer texts.
The most straightforward way to parse dates with dateparser is to
use the dateparser.parse()
function, that wraps around most of the
functionality of the module.
>>> import dateparser
>>> dateparser.parse('Fri, 12 Dec 2014 10:55:50')
datetime.datetime(2014, 12, 12, 10, 55, 50)
>>> dateparser.parse('1991-05-17')
datetime.datetime(1991, 5, 17, 0, 0)
>>> dateparser.parse('In two months') # today is 1st Aug 2020
datetime.datetime(2020, 10, 1, 11, 12, 27, 764201)
>>> dateparser.parse('1484823450') # timestamp
datetime.datetime(2017, 1, 19, 10, 57, 30)
>>> dateparser.parse('January 12, 2012 10:00 PM EST')
datetime.datetime(2012, 1, 12, 22, 0, tzinfo=<StaticTzInfo 'EST'>)
As you can see, dateparser works with different date formats, but it can also be used directly with strings in different languages:
>>> dateparser.parse('Martes 21 de Octubre de 2014') # Spanish (Tuesday 21 October 2014)
datetime.datetime(2014, 10, 21, 0, 0)
>>> dateparser.parse('Le 11 Décembre 2014 à 09:00') # French (11 December 2014 at 09:00)
datetime.datetime(2014, 12, 11, 9, 0)
>>> dateparser.parse('13 января 2015 г. в 13:34') # Russian (13 January 2015 at 13:34)
datetime.datetime(2015, 1, 13, 13, 34)
>>> dateparser.parse('1 เดือนตุลาคม 2005, 1:00 AM') # Thai (1 October 2005, 1:00 AM)
datetime.datetime(2005, 10, 1, 1, 0)
>>> dateparser.parse('yaklaşık 23 saat önce') # Turkish (23 hours ago), current time: 12:46
datetime.datetime(2019, 9, 7, 13, 46)
>>> dateparser.parse('2小时前') # Chinese (2 hours ago), current time: 22:30
datetime.datetime(2018, 5, 31, 20, 30)
You can control multiple behaviors by using the settings
parameter:
>>> dateparser.parse('2014-10-12', settings={'DATE_ORDER': 'YMD'})
datetime.datetime(2014, 10, 12, 0, 0)
>>> dateparser.parse('2014-10-12', settings={'DATE_ORDER': 'YDM'})
datetime.datetime(2014, 12, 10, 0, 0)
>>> dateparser.parse('1 year', settings={'PREFER_DATES_FROM': 'future'}) # Today is 2020-09-23
datetime.datetime(2021, 9, 23, 0, 0)
>>> dateparser.parse('tomorrow', settings={'RELATIVE_BASE': datetime.datetime(1992, 1, 1)})
datetime.datetime(1992, 1, 2, 0, 0)
To see more examples on how to use the settings
, check the settings
section
in the docs.
dateparser will do its best to return a date, dealing with multiple formats and different locales. For that reason it is important that the input is a valid date, otherwise it could return false positives.
To reduce the possibility of receiving false positives, make sure that:
- The input string it's a valid date and it doesn't contain any other words or numbers.
- If you know the language or languages beforehand you add them through the
languages
orlocales
properties.
On the other hand, if you want to exclude any of the default parsers
(timestamp
, relative-time
...) or change the order in which they
are executed, you can do so through the
settings PARSERS.
Dateparser supports Python >= 3.5. You can install it by doing:
$ pip install dateparser
If you want to use the jalali or hijri calendar, you need to install the
calendars
extra:
$ pip install dateparser[calendars]
dateparser can be used with a really different number of purposes, but it stands out when it comes to:
- Scraping: extract dates from different places with several different formats and languages
- IoT: consuming data coming from different sources with different date formats
- Tooling: consuming dates from different logs / sources
- Format transformations: when transforming dates coming from different files (PDF, CSV, etc.) to other formats (database, etc).
- Tooling and CLI: allow users to write “3 days ago” to retrieve information.
- Search engine: allow people to search by date in an easiest / natural format.
- Bots: allow users to interact with a bot easily
- price-parser - A small library for extracting price and currency from raw text strings.
- number-parser - Library to convert numbers written in the natural language to it's equivalent numeric forms.
- Scrapy - Web crawling and web scraping framework