{"id":625,"library":"dateparser","title":"Dateparser","description":"Dateparser is a Python library (v1.4.0) designed to parse dates from various formats, including natural language and localized strings, often found on web pages. It aims to simplify datetime string conversion, timezone handling, and ambiguous date resolution. The library has an active development cycle with minor versions released every few months, frequently adding new language support and parsing features.","status":"active","version":"1.4.0","language":"python","source_language":"en","source_url":"https://github.com/scrapinghub/dateparser","tags":["date parsing","datetime","natural language processing","localization","web scraping","time zones"],"install":[{"cmd":"pip install dateparser","lang":"bash","label":"Basic Installation"},{"cmd":"pip install dateparser[calendars]","lang":"bash","label":"With Calendar Support (e.g., Hijri, Jalali)"}],"dependencies":[{"reason":"Used for 'relativedelta' in freshness parsing.","package":"python-dateutil"},{"reason":"Required for converting Jalali dates to Gregorian.","package":"convertdate"},{"reason":"Required for converting Hijri dates to Gregorian (migrated from `hijri-converter` in v1.2.1).","package":"hijridate"},{"reason":"Used to reliably get the local timezone.","package":"tzlocal"},{"reason":"Optional dependency for operations on language files.","package":"ruamel.yaml","optional":true}],"imports":[{"symbol":"parse","correct":"from dateparser import parse"},{"note":"For advanced use cases like caching detected languages and custom parsing behavior.","symbol":"DateDataParser","correct":"from dateparser.date import DateDataParser"}],"quickstart":{"code":"import dateparser\nfrom datetime import datetime\n\n# Basic parsing\ndate_obj1 = dateparser.parse('12/12/12')\nprint(f\"'12/12/12' parsed as: {date_obj1}\")\n\n# Parsing a relative date\ndate_obj2 = dateparser.parse('2 days ago')\nprint(f\"'2 days ago' parsed as: {date_obj2}\")\n\n# Parsing a date with specific language settings\ndate_obj3 = dateparser.parse('Martes 21 de Octubre de 2014', languages=['es'])\nprint(f\"'Martes 21 de Octubre de 2014' (Spanish) parsed as: {date_obj3}\")\n\n# Parsing with timezone preference\ndate_obj4 = dateparser.parse('August 14, 2015 EST', settings={'TIMEZONE': 'America/New_York', 'RETURN_AS_TIMEZONE_AWARE': True})\nprint(f\"'August 14, 2015 EST' with timezone preference: {date_obj4}\")","lang":"python","description":"The most common way to parse dates is using the `dateparser.parse()` function. It automatically detects formats and languages, and can be configured with settings for more control, such as handling relative dates or specific timezones."},"warnings":[{"fix":"Upgrade to Python >=3.10.","message":"Python 3.9 support was dropped in `dateparser` v1.3.0. Ensure your environment uses Python 3.10 or newer.","severity":"breaking","affected_versions":">=1.3.0"},{"fix":"Review any custom logic that interacted with locale metadata or expected specific deserialization behavior. Adapt to stricter parsing rules.","message":"In v1.4.0, security fixes removed import-time loading of timezone offset data from pickle and replaced `eval()` use with strict boolean parsing for `no_word_spacing`. Users relying on custom deserialized data or specific locale metadata processing might experience changes.","severity":"breaking","affected_versions":">=1.4.0"},{"fix":"Update code expecting a dictionary from `get_date_data()` to handle a `DateData` object. Validate settings passed to avoid `SettingValidationError`.","message":"In v1.0.0, `DateDataParser.get_date_data()` changed its return type from a `dict` to a `DateData` object. Additionally, providing wrong settings now raises `SettingValidationError` instead of being silently ignored.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Pass `settings={'TIMEZONE': 'UTC', 'RETURN_AS_TIMEZONE_AWARE': True}` (or your desired timezone) to `dateparser.parse()` for consistent timezone-aware results.","message":"Dateparser returns naive `datetime` objects by default if the input string lacks timezone information. To ensure timezone-aware `datetime` objects, specify `TIMEZONE` and `RETURN_AS_TIMEZONE_AWARE=True` in settings.","severity":"gotcha","affected_versions":"all"},{"fix":"Use `settings={'DATE_ORDER': 'DMY'}` (or 'MDY', 'YMD' as appropriate) or `languages=['en-US']` to guide the parser.","message":"Ambiguous date formats (e.g., '03/11/2024') can lead to incorrect parsing (e.g., MM/DD/YYYY vs. DD/MM/YYYY). To resolve this, explicitly set the `DATE_ORDER` setting or provide known `languages` or `locales`.","severity":"gotcha","affected_versions":"all"},{"fix":"Configure settings like `settings={'PREFER_DATES_FROM': 'past'}` or `{'PREFER_MONTH_OF_YEAR': 'last'}` to control how missing date parts are inferred.","message":"When parsing incomplete dates (e.g., 'March 15', '2024'), the library fills in missing components based on current date context. For consistent behavior, use `PREFER_DATES_FROM`, `PREFER_DAY_OF_MONTH`, or `PREFER_MONTH_OF_YEAR` settings.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-12T16:54:28.308Z","next_check":"2026-06-26T00:00:00.000Z","problems":[{"fix":"Install the package using pip: `pip install dateparser`","cause":"The dateparser library has not been installed in the Python environment where the code is being executed.","error":"ModuleNotFoundError: No module named 'dateparser'"},{"fix":"Import the 'parse' function directly: `from dateparser import parse`","cause":"The 'parse' function is incorrectly accessed directly from the 'dateparser' module instead of being imported from it.","error":"AttributeError: module 'dateparser' has no attribute 'parse'"},{"fix":"Always check if the result of `dateparser.parse()` is `None` before attempting further operations. For strings with extra text, consider using `dateparser.search.search_dates()` instead.","cause":"The `dateparser.parse()` function returns `None` when it cannot successfully parse the input string into a date, and subsequent code attempts to call a method on this `None` object. This often happens with ambiguous, malformed, or incomplete date strings, or strings containing extraneous text.","error":"TypeError: 'NoneType' object is not callable"},{"fix":"Ensure that the language codes are valid ISO 639-1 codes (e.g., `['en']`) and that the `languages` argument is always provided as a list.","cause":"This error occurs when an invalid or unsupported language code is provided to dateparser's functions or settings, or if the 'languages' argument is not supplied as a list.","error":"ValueError: Unknown Language"}],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":80,"quickstart_tag":"verified","pypi_latest":"1.4.0","install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":1.03,"mem_mb":7.9,"disk_size":"27.3M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"calendars","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":1.09,"mem_mb":7.9,"disk_size":"33.5M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.12,"mem_mb":7.9,"disk_size":"27.3M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"calendars","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.13,"mem_mb":7.9,"disk_size":"33.5M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":2.9,"import_time_s":0.72,"mem_mb":7.9,"disk_size":"28M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"calendars","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":4.4,"import_time_s":0.77,"mem_mb":7.9,"disk_size":"34M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.73,"mem_mb":7.9,"disk_size":"28M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"calendars","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.77,"mem_mb":7.9,"disk_size":"34M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":1.55,"mem_mb":8.2,"disk_size":"29.9M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"calendars","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":1.53,"mem_mb":8.3,"disk_size":"37.3M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.75,"mem_mb":8.3,"disk_size":"29.9M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"calendars","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.81,"mem_mb":8.3,"disk_size":"37.3M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":2.6,"import_time_s":1.42,"mem_mb":8.3,"disk_size":"31M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"calendars","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":4,"import_time_s":1.37,"mem_mb":8.3,"disk_size":"38M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.36,"mem_mb":8.3,"disk_size":"31M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"calendars","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.3,"mem_mb":8.3,"disk_size":"38M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":1.02,"mem_mb":8.2,"disk_size":"21.6M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"calendars","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":1.04,"mem_mb":8.2,"disk_size":"26.8M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.15,"mem_mb":8.2,"disk_size":"21.6M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"calendars","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.23,"mem_mb":8.2,"disk_size":"26.8M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":2.3,"import_time_s":1.14,"mem_mb":8.2,"disk_size":"23M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"calendars","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":4.7,"import_time_s":1.13,"mem_mb":8.2,"disk_size":"28M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.21,"mem_mb":8.2,"disk_size":"23M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"calendars","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.17,"mem_mb":8.2,"disk_size":"28M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.83,"mem_mb":9,"disk_size":"21.4M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"calendars","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":0.92,"mem_mb":9,"disk_size":"26.5M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.98,"mem_mb":9,"disk_size":"21.3M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"calendars","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.97,"mem_mb":9,"disk_size":"26.4M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":2.4,"import_time_s":0.93,"mem_mb":9,"disk_size":"22M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"calendars","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":4.7,"import_time_s":0.96,"mem_mb":9,"disk_size":"28M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.02,"mem_mb":9,"disk_size":"22M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"calendars","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.99,"mem_mb":9,"disk_size":"27M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.16,"mem_mb":8.3,"disk_size":"26.8M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"calendars","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":null,"import_time_s":0.18,"mem_mb":8.3,"disk_size":"32.7M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.2,"mem_mb":8.3,"disk_size":"26.8M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"calendars","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.19,"mem_mb":8.3,"disk_size":"32.7M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":3.3,"import_time_s":0.15,"mem_mb":8.3,"disk_size":"28M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"calendars","exit_code":0,"wheel_type":"sdist","failure_reason":null,"install_time_s":4.9,"import_time_s":0.15,"mem_mb":8.3,"disk_size":"34M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.16,"mem_mb":8.3,"disk_size":"28M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"calendars","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.15,"mem_mb":8.3,"disk_size":"34M"}]},"quickstart_checks":{"last_tested":"2026-04-24","tag":"verified","tag_description":"quickstart runs on critical runtimes, recently tested","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]}}