Fundamentals 8 min read

Using Python dateutil for Date and Time Parsing, Manipulation, and Formatting

This article introduces the Python dateutil library, showing how to install it, parse various date strings, perform date arithmetic with relativedelta, handle time zones, format dates, compute intervals, parse ISO strings, and generate recurring events through clear code examples.

Test Development Learning Exchange
Test Development Learning Exchange
Test Development Learning Exchange
Using Python dateutil for Date and Time Parsing, Manipulation, and Formatting

In Python, handling dates and times often requires external libraries; the dateutil module provides powerful parsing, manipulation, and formatting capabilities.

Installation and import

pip install python-dateutil
import dateutil

Date and time parsing

from dateutil.parser import parse
date1 = parse("2019-10-01 12:00:00")
date2 = parse("1st October 2019")
date3 = parse("Tue, 01 Oct 2019 12:00:00 GMT")
print(date1, date2, date3)

The parse() function automatically detects many common date formats and returns datetime objects.

Date arithmetic with relativedelta

from dateutil.relativedelta import relativedelta
from datetime import datetime
now = datetime.now()
tomorrow = now + relativedelta(days=1)
last_week = now + relativedelta(weeks=-1)
print(now, tomorrow, last_week)

Formatting and time‑zone conversion

from dateutil.parser import parse
from dateutil import tz
date = parse("2019-10-01 12:00:00+00:00")
bj_tz = tz.gettz('Asia/Shanghai')
bj_time = date.astimezone(bj_tz)
print(bj_time.strftime('%Y年%m月%d日 %H时%M分%S秒'))

Output example: 2019年10月01日 20时00分00秒

Time‑zone handling

from dateutil import tz
from datetime import datetime
now = datetime.now()
ny_tz = tz.gettz('America/New_York')
ny_time = now.astimezone(ny_tz)
print(now, ny_time)

Calculating intervals

from dateutil.relativedelta import relativedelta
from datetime import datetime
start_date = datetime(2019, 10, 1)
end_date = datetime(2020, 1, 1)
interval = relativedelta(end_date, start_date)
print("时间间隔:", interval.years, "年", interval.months, "月", interval.days, "天")

Parsing ISO‑format strings

from datetime import datetime
datestr = "2019-10-01T12:00:00+00:00"
date = datetime.fromisoformat(datestr)
print(date)

Recurring events with rrule

from dateutil.rrule import rrule, WEEKLY
from datetime import datetime, time
start_date = datetime(2019, 10, 8)
end_date = datetime(2019, 12, 31)
rule = rrule(
    freq=WEEKLY,
    byweekday=2,
    byhour=10,
    byminute=0,
    bysecond=0,
    dtstart=start_date,
    until=end_date
)
for dt in rule:
    print(dt.strftime('%Y-%m-%d %H:%M:%S'))

Complex time‑span calculations

from dateutil.relativedelta import relativedelta
from datetime import datetime, timedelta
start_date = datetime(2019, 10, 1)
end_date = datetime(2020, 1, 1)
delta = relativedelta(end_date, start_date)
print("时间差:", delta.months, "月", delta.days, "天")
new_date = start_date + delta + timedelta(days=7)
print("新日期:", new_date.strftime('%Y-%m-%d %H:%M:%S'))

Conclusion

The dateutil library offers a comprehensive set of tools for parsing, manipulating, formatting, handling time zones, computing intervals, parsing ISO dates, and generating recurring events, making it a valuable resource for everyday date‑time tasks in Python.

ParsingDateTimetimezonedateutilrecurrencerelativedelta
Test Development Learning Exchange
Written by

Test Development Learning Exchange

Test Development Learning Exchange

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.