python-dateutil
Extensions to the standard Python datetime module
Decision gist · record as of 2026-08-14
Yes. python-dateutil is a mature, widely-adopted standard for date handling in Python. It has no known vulnerabilities, low install friction, permissive dual licensing, and active maintenance. Install it if you need to parse flexible date strings, compute relative dates, handle timezones, or work with recurrence rules—it's the de facto choice for these tasks.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Low friction: pure Python wheel, single lightweight dependency (six).
- Actively maintained with recent commits; production-stable since early releases and widely adopted.
License · maintenance · safety
Dual License (permissive) — Dual-licensed under Apache 2.0 or BSD 3-Clause (permissive). Contributions after December 1, 2017 use dual license; earlier contributions use BSD 3-Clause only. No restrictions on commercial or proprietary use.
last release 2024-03-01 (896 days) · last repo commit 2026-05-19 · 2,631 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 1,188,011,910 downloads/mo, #16 on PyPI
Alternatives
Verify before relying
pip install python-dateutil
from dateutil.parser import parse
from dateutil.relativedelta import relativedelta
from dateutil.rrule import rrule, MONTHLY
dt = parse("Sat Oct 11 17:13:46 UTC 2003")
next_month = dt + relativedelta(months=1)
recurring = rrule(MONTHLY, dtstart=dt, count=3)- Exact scope of timezone database updates and how often Olson data is refreshed
- Performance characteristics for large recurrence rule computations or bulk date parsing
What it is and what it does
python-dateutil extends Python's standard datetime module with practical tools for real-world date and time work. It handles parsing dates from almost any string format, computing relative time differences (e.g., "next month", "last Friday"), generating recurring dates via iCalendar-compatible recurrence rules, and managing timezones across multiple formats (tzfile, TZ environment strings, Windows registry, UTC, fixed offsets). It includes Olson timezone data and can compute Easter dates using Western, Orthodox, or Julian algorithms.
The package is a single dependency (six) and installs as a pure Python wheel with no compiled components. It's been in production use since 2008 and is actively maintained. Developers typically use it when they need to parse user-supplied date strings, compute date ranges, schedule recurring events, or handle timezone-aware datetime operations without reaching for heavier frameworks.
Use it for
- Parse user-supplied date strings in varied formats and convert to datetime objects for validation or storage
- Compute relative date offsets (e.g., 'next quarter', 'last day of month') for scheduling or reporting
- Generate recurring event dates from iCalendar recurrence rules for calendar or task applications
- Handle timezone conversions and localization across different geographic regions and DST rules
- Calculate Easter dates for calendar or liturgical applications
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
python-dateutil is a mature, widely-adopted standard for date handling in Python. It has no known vulnerabilities, low install friction, permissive dual licensing, and active maintenance. Install it if you need to parse flexible date strings, compute relative dates, handle timezones, or work with recurrence rules—it's the de facto choice for these tasks.
Install
python-dateutil on PyPI
Before you install
Low friction: pure Python wheel, single lightweight dependency (six). Actively maintained with recent commits; production-stable since early releases and widely adopted.
License in practice
Dual-licensed under Apache 2.0 or BSD 3-Clause (permissive). Contributions after December 1, 2017 use dual license; earlier contributions use BSD 3-Clause only. No restrictions on commercial or proprietary use.
Quickstart
pip install python-dateutil
from dateutil.parser import parse
from dateutil.relativedelta import relativedelta
from dateutil.rrule import rrule, MONTHLY
dt = parse("Sat Oct 11 17:13:46 UTC 2003")
next_month = dt + relativedelta(months=1)
recurring = rrule(MONTHLY, dtstart=dt, count=3)
Verify before relying
- Exact scope of timezone database updates and how often Olson data is refreshed
- Performance characteristics for large recurrence rule computations or bulk date parsing
Package facts
| License | Dual License permissive |
| Python support | Supports the current Python release !=3.0.*,!=3.1.*,!=3.2.*,>=2.7 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packagesix |
| Maintenance | Actively maintained 896 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,188,011,910 / month, #16 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: DevelopersLicense :: OSI Approved :: Apache Software LicenseLicense :: OSI Approved :: BSD LicenseProgramming Language :: PythonProgramming Language :: Python :: 2Programming Language :: Python :: 2.7Programming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.3Programming Language :: Python :: 3.4Programming Language :: Python :: 3.5Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: Software Development :: Libraries |
Evidence: python_dateutil-2.9.0.post0-py2.py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “relative date arithmetic”
- python-dateutilProvides parsing, arithmetic, and recurrence rule computation for…
- timelibParses natural-language date and time descriptions (like "next…
- pendulumPendulum provides an enhanced datetime API for Python that handles…
Give your agent the search over MCP, or paste the wish link into any chat.
More Libraries packages
urllib3 is an HTTP client library that provides thread-safe connection pooling, SSL/TLS verification, multipart file uploads, request retries, compression support, and proxy handling for Python applications.
Requests is a Python HTTP library that simplifies sending HTTP/1.1 requests with automatic handling of headers, authentication, cookies, and response parsing.
Pluggy provides a plugin system that lets you define hook specifications and register implementations to be called in sequence, enabling extensible Python applications without tight coupling.
Install it if you're building an extensible application or framework.
Six provides utility functions to write Python code that runs on both Python 2.7 and Python 3.3+, smoothing over language differences between the two versions.
pytest is a testing framework that lets you write test functions using plain assert statements and automatically discovers and runs them, with detailed failure reporting.
iniconfig parses INI configuration files while preserving section and entry order, supporting multi-line values, comments, and raising errors with line numbers.
See also dateutils · delorean · django-recurrence · iso8601 · ical · prefixdate · types-python-dateutil · x-wr-timezone · dateparser · recurring-ical-events