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.
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 dateutilDate 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.
Test Development Learning Exchange
Test Development Learning Exchange
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.