Functions
parse_date
Parse various date formats into datetime.
Handles:
- datetime objects (pass through)
- date object…
parse_date
def parse_date(value: DateLike, formats: list[str] | None = None, on_error: str = 'return_none') -> datetime | None
Parse various date formats into datetime.
Handles:
- datetime objects (pass through)
- date objects (convert to datetime at midnight)
- ISO 8601 strings (with or without timezone)
- Custom format strings
Parameters 3
| Name | Type | Default | Description |
|---|---|---|---|
value |
DateLike |
— | Date value in various formats |
formats |
list[str] | None |
None |
Optional list of strptime format strings to try |
on_error |
str |
'return_none' |
How to handle parse errors: - 'return_none': Return None (default) - 'raise': Raise ValueError - 'return_original': Return original value as-is |
Returns
datetime object or None if parsing failsdatetime | None
—
format_date_iso
Format date as ISO 8601 string.
Uses parse_date internally for flexible input handling.
format_date_iso
def format_date_iso(date: DateLike) -> str
Format date as ISO 8601 string.
Uses parse_date internally for flexible input handling.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
date |
DateLike |
— | Date value in various formats |
Returns
ISO 8601 formatted string (YYYY-MM-DDTHH:MM:SS)str
—
format_date_rfc822
Format date as RFC 822 string (for RSS feeds).
Uses parse_date internally for flexible input handling.
format_date_rfc822
def format_date_rfc822(date: DateLike) -> str
Format date as RFC 822 string (for RSS feeds).
Uses parse_date internally for flexible input handling.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
date |
DateLike |
— | Date value in various formats |
Returns
RFC 822 formatted string (e.g., "Fri, 03 Oct 2025 14:30:00 +0000")str
—
format_date_human
Format date in human-readable format.
Uses parse_date internally for flexible input handling.
format_date_human
def format_date_human(date: DateLike, format: str = '%B %d, %Y') -> str
Format date in human-readable format.
Uses parse_date internally for flexible input handling.
Parameters 2
| Name | Type | Default | Description |
|---|---|---|---|
date |
DateLike |
— | Date value in various formats |
format |
str |
'%B %d, %Y' |
strftime format string (default: "October 09, 2025") |
Returns
Formatted date stringstr
—
time_ago
Convert date to human-readable "time ago" format.
Uses parse_date internally for flexible input ha…
time_ago
def time_ago(date: DateLike, now: datetime | None = None) -> str
Convert date to human-readable "time ago" format.
Uses parse_date internally for flexible input handling.
Parameters 2
| Name | Type | Default | Description |
|---|---|---|---|
date |
DateLike |
— | Date to convert |
now |
datetime | None |
None |
Current time (defaults to datetime.now()) |
Returns
Human-readable time ago stringstr
—
get_current_year
Get current year as integer.
Useful for copyright notices and templates.
get_current_year
def get_current_year() -> int
Get current year as integer.
Useful for copyright notices and templates.
Returns
Current yearint
—
is_recent
Check if date is recent (within specified days).
is_recent
def is_recent(date: DateLike, days: int = 7, now: datetime | None = None) -> bool
Check if date is recent (within specified days).
Parameters 3
| Name | Type | Default | Description |
|---|---|---|---|
date |
DateLike |
— | Date to check |
days |
int |
7 |
Number of days to consider "recent" (default: 7) |
now |
datetime | None |
None |
Current time (defaults to datetime.now()) |
Returns
True if date is within the last N daysbool
—
date_range_overlap
Check if two date ranges overlap.
date_range_overlap
def date_range_overlap(start1: DateLike, end1: DateLike, start2: DateLike, end2: DateLike) -> bool
Check if two date ranges overlap.
Parameters 4
| Name | Type | Default | Description |
|---|---|---|---|
start1 |
DateLike |
— | Start of first range |
end1 |
DateLike |
— | End of first range |
start2 |
DateLike |
— | Start of second range |
end2 |
DateLike |
— | End of second range |
Returns
True if ranges overlapbool
—
utc_now
Get current UTC datetime (low-level primitive).
utc_now
def utc_now() -> datetime
Get current UTC datetime (low-level primitive).
Returns
datetime
iso_timestamp
Get ISO 8601 timestamp from datetime (UTC).
iso_timestamp
def iso_timestamp(dt: datetime | None = None) -> str
Get ISO 8601 timestamp from datetime (UTC).
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
dt |
datetime | None |
None |
Returns
str