Skip to main content

Module dateparse

Module dateparse 

Source
Expand description

Django-shape ISO 8601 date / time / datetime / duration string parsers — dateparse::{parse_date, parse_time, parse_datetime, parse_duration}. Mirrors django.utils.dateparse.*. Django-shape ISO 8601 / W3C datetime parsers.

Mirrors django.utils.dateparse.{parse_date, parse_time, parse_datetime, parse_duration}. Each returns Option<T> — None on any parse failure, matching Django’s “return None when the input doesn’t conform” shape.

Designed for inputs that come from JSON APIs, form fields, and URL query strings — where you’ve already validated “this is a string” but need to know if it’s a parseable date/time/duration.

ⓘ
use rustango::dateparse::{parse_date, parse_time, parse_datetime, parse_duration};

assert!(parse_date("2026-06-04").is_some());
assert!(parse_time("12:30:00").is_some());
assert!(parse_datetime("2026-06-04T12:30:00Z").is_some());
assert!(parse_duration("PT1H30M").is_some()); // ISO 8601 duration
assert!(parse_duration("1 day, 2:30:00").is_some()); // Django shape

Functions§

duration_iso_string
django.utils.duration.duration_iso_string(timedelta) — ISO 8601 duration string for a std::time::Duration.
duration_string
Django-parity parse_duration(value) — parse a duration string into a std::time::Duration. Accepts two shapes (matching Django’s union):
parse_date
Django-parity parse_date(value) — parse an ISO 8601 date (YYYY-MM-DD) into a NaiveDate. Returns None on any formatting / out-of-range failure.
parse_datetime
Django-parity parse_datetime(value) — parse an ISO 8601 datetime (YYYY-MM-DDTHH:MM:SS[.fff][Z|±HH:MM]) into a DateTime<Utc>. Both T and space separator between date and time are accepted (W3C profile / ISO 8601 §4.1.2.5).
parse_duration
parse_time
Django-parity parse_time(value) — parse an ISO 8601 time (HH:MM:SS[.fff]) into a NaiveTime. Optional fractional seconds are accepted; the wire format does NOT include timezone.