Skip to content

Temporal Module

The rite.temporal module provides comprehensive date, time, and duration management utilities.

Overview

temporal

Temporal Module

Date, time, and timezone operations.

This module provides comprehensive utilities for working with dates, times, durations, timezones, calendars, and formatting using only Python's standard library.

Submodules

  • datetime: Date and time operations
  • duration: Time duration utilities
  • timezone: Timezone conversions
  • calendar: Calendar operations
  • formatting: Date/time formatting

Examples

from rite.temporal import datetime_now, duration_from_hours now = datetime_now() dur = duration_from_hours(2)

Notes

Legacy classes Timestamp, Duration, and Timezone are still available for backward compatibility.

Modules

calendar

Calendar Module

Calendar operations.

This submodule provides utilities for calendar operations like leap years, days in month, and weekday calculations.

Examples

from rite.temporal.calendar import calendar_is_leap_year from rite.temporal.calendar import calendar_month_days calendar_is_leap_year(2024) True calendar_month_days(2024, 2) 29

Modules
calendar_is_leap_year
Calendar Is Leap Year

Check if year is leap year.

Examples

from rite.temporal.calendar import calendar_is_leap_year calendar_is_leap_year(2024) True

Functions
calendar_is_leap_year
calendar_is_leap_year(year: int) -> bool

Check if year is a leap year.

Parameters:

Name Type Description Default
year int

Year to check.

required

Returns:

Type Description
bool

True if leap year, False otherwise.

Examples:

>>> calendar_is_leap_year(2024)
True
>>> calendar_is_leap_year(2023)
False
>>> calendar_is_leap_year(2000)
True
Notes

Uses calendar.isleap().

calendar_month_days
Calendar Month Days

Get number of days in month.

Examples

from rite.temporal.calendar import calendar_month_days calendar_month_days(2024, 2) 29

Functions
calendar_month_days
calendar_month_days(year: int, month: int) -> int

Get number of days in month.

Parameters:

Name Type Description Default
year int

Year.

required
month int

Month (1-12).

required

Returns:

Type Description
int

Number of days in month.

Examples:

>>> calendar_month_days(2024, 2)
29
>>> calendar_month_days(2023, 2)
28
>>> calendar_month_days(2024, 4)
30
Notes

Uses calendar.monthrange().

calendar_weekday
Calendar Weekday

Get weekday for date.

Examples

from rite.temporal.calendar import calendar_weekday calendar_weekday(2024, 12, 27) 4

Functions
calendar_weekday
calendar_weekday(year: int, month: int, day: int) -> int

Get weekday for date.

Parameters:

Name Type Description Default
year int

Year.

required
month int

Month (1-12).

required
day int

Day of month.

required

Returns:

Type Description
int

Weekday (0=Monday, 6=Sunday).

Examples:

>>> calendar_weekday(2024, 12, 27)
4
>>> calendar_weekday(2024, 1, 1)
0
Notes

Uses calendar.weekday(). 0=Monday, 6=Sunday.

calendar_is_leap_year

Calendar Is Leap Year

Check if year is leap year.

Examples

from rite.temporal.calendar import calendar_is_leap_year calendar_is_leap_year(2024) True

Functions
calendar_is_leap_year
calendar_is_leap_year(year: int) -> bool

Check if year is a leap year.

Parameters:

Name Type Description Default
year int

Year to check.

required

Returns:

Type Description
bool

True if leap year, False otherwise.

Examples:

>>> calendar_is_leap_year(2024)
True
>>> calendar_is_leap_year(2023)
False
>>> calendar_is_leap_year(2000)
True
Notes

Uses calendar.isleap().

calendar_month_days

Calendar Month Days

Get number of days in month.

Examples

from rite.temporal.calendar import calendar_month_days calendar_month_days(2024, 2) 29

Functions
calendar_month_days
calendar_month_days(year: int, month: int) -> int

Get number of days in month.

Parameters:

Name Type Description Default
year int

Year.

required
month int

Month (1-12).

required

Returns:

Type Description
int

Number of days in month.

Examples:

>>> calendar_month_days(2024, 2)
29
>>> calendar_month_days(2023, 2)
28
>>> calendar_month_days(2024, 4)
30
Notes

Uses calendar.monthrange().

calendar_weekday

Calendar Weekday

Get weekday for date.

Examples

from rite.temporal.calendar import calendar_weekday calendar_weekday(2024, 12, 27) 4

Functions
calendar_weekday
calendar_weekday(year: int, month: int, day: int) -> int

Get weekday for date.

Parameters:

Name Type Description Default
year int

Year.

required
month int

Month (1-12).

required
day int

Day of month.

required

Returns:

Type Description
int

Weekday (0=Monday, 6=Sunday).

Examples:

>>> calendar_weekday(2024, 12, 27)
4
>>> calendar_weekday(2024, 1, 1)
0
Notes

Uses calendar.weekday(). 0=Monday, 6=Sunday.

datetime

DateTime Module

Date and time operations.

This submodule provides utilities for working with datetime objects including creation, parsing, formatting, and conversions.

Examples

from rite.temporal.datetime import datetime_now, datetime_format now = datetime_now() datetime_format(now) '2024-12-27 15:30:00'

Modules
datetime_format
DateTime Format

Format datetime to string.

Examples

from rite.temporal.datetime import datetime_format from datetime import datetime datetime_format(datetime.now())

Functions
datetime_format
datetime_format(dt: datetime, fmt: str = '%Y-%m-%d %H:%M:%S') -> str

Format datetime to string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required
fmt str

Format string. Defaults to "%Y-%m-%d %H:%M:%S".

'%Y-%m-%d %H:%M:%S'

Returns:

Type Description
str

Formatted datetime string.

Examples:

>>> from datetime import datetime
>>> dt = datetime(2024, 12, 27, 15, 30)
>>> datetime_format(dt)
'2024-12-27 15:30:00'
>>> datetime_format(dt, "%d/%m/%Y")
'27/12/2024'
Notes

See strftime documentation for format codes.

datetime_from_timestamp
DateTime From Timestamp

Create datetime from UNIX timestamp.

Examples

from rite.temporal.datetime import datetime_from_timestamp datetime_from_timestamp(1735315200)

Functions
datetime_from_timestamp
datetime_from_timestamp(timestamp: int | float, tz: timezone | None = None) -> datetime

Create datetime from UNIX timestamp.

Parameters:

Name Type Description Default
timestamp int | float

UNIX timestamp (seconds since epoch).

required
tz timezone | None

Timezone. Defaults to UTC.

None

Returns:

Type Description
datetime

Datetime object.

Examples:

>>> datetime_from_timestamp(1735315200)
datetime.datetime(2024, 12, 27, ...)
>>> datetime_from_timestamp(0, timezone.utc)
datetime.datetime(1970, 1, 1, 0, 0, tzinfo=...)
Notes

Handles both int and float timestamps. Defaults to UTC timezone.

datetime_now
DateTime Now

Get current datetime.

Examples

from rite.temporal.datetime import datetime_now datetime_now() datetime.datetime(2025, 12, 27, ...)

Functions
datetime_now
datetime_now(tz: timezone | None = None) -> datetime

Get current datetime.

Parameters:

Name Type Description Default
tz timezone | None

Timezone. Defaults to UTC.

None

Returns:

Type Description
datetime

Current datetime object.

Examples:

>>> datetime_now()
datetime.datetime(2025, 12, 27, ...)
>>> datetime_now(timezone.utc)
datetime.datetime(2025, 12, 27, ..., tzinfo=...)
Notes

Uses timezone-aware datetime. Defaults to UTC if no timezone provided.

datetime_parse
DateTime Parse

Parse datetime from string.

Examples

from rite.temporal.datetime import datetime_parse datetime_parse("2024-12-27", "%Y-%m-%d")

Functions
datetime_parse
datetime_parse(date_string: str, fmt: str = '%Y-%m-%d %H:%M:%S') -> datetime

Parse datetime from string.

Parameters:

Name Type Description Default
date_string str

Date/time string.

required
fmt str

Format string. Defaults to "%Y-%m-%d %H:%M:%S".

'%Y-%m-%d %H:%M:%S'

Returns:

Type Description
datetime

Parsed datetime object.

Examples:

>>> datetime_parse("2024-12-27", "%Y-%m-%d")
datetime.datetime(2024, 12, 27, 0, 0)
>>> datetime_parse("27/12/2024 15:30", "%d/%m/%Y %H:%M")
datetime.datetime(2024, 12, 27, 15, 30)
Notes

See strftime documentation for format codes. Returns naive datetime (no timezone).

datetime_to_iso
DateTime To ISO

Convert datetime to ISO 8601 string.

Examples

from rite.temporal.datetime import datetime_to_iso from datetime import datetime datetime_to_iso(datetime.now())

Functions
datetime_to_iso
datetime_to_iso(dt: datetime) -> str

Convert datetime to ISO 8601 string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
str

ISO 8601 formatted string.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(2024, 12, 27, 15, 30, tzinfo=timezone.utc)
>>> datetime_to_iso(dt)
'2024-12-27T15:30:00+00:00'
Notes

Uses isoformat() method. Includes timezone if present.

datetime_to_timestamp
DateTime To Timestamp

Convert datetime to UNIX timestamp.

Examples

from rite.temporal.datetime import datetime_to_timestamp from datetime import datetime datetime_to_timestamp(datetime(2024, 12, 27))

Functions
datetime_to_timestamp
datetime_to_timestamp(dt: datetime) -> int

Convert datetime to UNIX timestamp.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
int

UNIX timestamp as integer.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(1970, 1, 1, tzinfo=timezone.utc)
>>> datetime_to_timestamp(dt)
0
Notes

Returns integer (seconds). For milliseconds, use int(dt.timestamp() * 1000).

datetime_format

DateTime Format

Format datetime to string.

Examples

from rite.temporal.datetime import datetime_format from datetime import datetime datetime_format(datetime.now())

Functions
datetime_format
datetime_format(dt: datetime, fmt: str = '%Y-%m-%d %H:%M:%S') -> str

Format datetime to string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required
fmt str

Format string. Defaults to "%Y-%m-%d %H:%M:%S".

'%Y-%m-%d %H:%M:%S'

Returns:

Type Description
str

Formatted datetime string.

Examples:

>>> from datetime import datetime
>>> dt = datetime(2024, 12, 27, 15, 30)
>>> datetime_format(dt)
'2024-12-27 15:30:00'
>>> datetime_format(dt, "%d/%m/%Y")
'27/12/2024'
Notes

See strftime documentation for format codes.

datetime_from_timestamp

DateTime From Timestamp

Create datetime from UNIX timestamp.

Examples

from rite.temporal.datetime import datetime_from_timestamp datetime_from_timestamp(1735315200)

Functions
datetime_from_timestamp
datetime_from_timestamp(timestamp: int | float, tz: timezone | None = None) -> datetime

Create datetime from UNIX timestamp.

Parameters:

Name Type Description Default
timestamp int | float

UNIX timestamp (seconds since epoch).

required
tz timezone | None

Timezone. Defaults to UTC.

None

Returns:

Type Description
datetime

Datetime object.

Examples:

>>> datetime_from_timestamp(1735315200)
datetime.datetime(2024, 12, 27, ...)
>>> datetime_from_timestamp(0, timezone.utc)
datetime.datetime(1970, 1, 1, 0, 0, tzinfo=...)
Notes

Handles both int and float timestamps. Defaults to UTC timezone.

datetime_now

DateTime Now

Get current datetime.

Examples

from rite.temporal.datetime import datetime_now datetime_now() datetime.datetime(2025, 12, 27, ...)

Functions
datetime_now
datetime_now(tz: timezone | None = None) -> datetime

Get current datetime.

Parameters:

Name Type Description Default
tz timezone | None

Timezone. Defaults to UTC.

None

Returns:

Type Description
datetime

Current datetime object.

Examples:

>>> datetime_now()
datetime.datetime(2025, 12, 27, ...)
>>> datetime_now(timezone.utc)
datetime.datetime(2025, 12, 27, ..., tzinfo=...)
Notes

Uses timezone-aware datetime. Defaults to UTC if no timezone provided.

datetime_parse

DateTime Parse

Parse datetime from string.

Examples

from rite.temporal.datetime import datetime_parse datetime_parse("2024-12-27", "%Y-%m-%d")

Functions
datetime_parse
datetime_parse(date_string: str, fmt: str = '%Y-%m-%d %H:%M:%S') -> datetime

Parse datetime from string.

Parameters:

Name Type Description Default
date_string str

Date/time string.

required
fmt str

Format string. Defaults to "%Y-%m-%d %H:%M:%S".

'%Y-%m-%d %H:%M:%S'

Returns:

Type Description
datetime

Parsed datetime object.

Examples:

>>> datetime_parse("2024-12-27", "%Y-%m-%d")
datetime.datetime(2024, 12, 27, 0, 0)
>>> datetime_parse("27/12/2024 15:30", "%d/%m/%Y %H:%M")
datetime.datetime(2024, 12, 27, 15, 30)
Notes

See strftime documentation for format codes. Returns naive datetime (no timezone).

datetime_to_iso

DateTime To ISO

Convert datetime to ISO 8601 string.

Examples

from rite.temporal.datetime import datetime_to_iso from datetime import datetime datetime_to_iso(datetime.now())

Functions
datetime_to_iso
datetime_to_iso(dt: datetime) -> str

Convert datetime to ISO 8601 string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
str

ISO 8601 formatted string.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(2024, 12, 27, 15, 30, tzinfo=timezone.utc)
>>> datetime_to_iso(dt)
'2024-12-27T15:30:00+00:00'
Notes

Uses isoformat() method. Includes timezone if present.

datetime_to_timestamp

DateTime To Timestamp

Convert datetime to UNIX timestamp.

Examples

from rite.temporal.datetime import datetime_to_timestamp from datetime import datetime datetime_to_timestamp(datetime(2024, 12, 27))

Functions
datetime_to_timestamp
datetime_to_timestamp(dt: datetime) -> int

Convert datetime to UNIX timestamp.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
int

UNIX timestamp as integer.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(1970, 1, 1, tzinfo=timezone.utc)
>>> datetime_to_timestamp(dt)
0
Notes

Returns integer (seconds). For milliseconds, use int(dt.timestamp() * 1000).

duration

Duration Module

Time duration operations.

This submodule provides utilities for creating and manipulating time durations using timedelta objects.

Examples

from rite.temporal.duration import duration_from_hours from rite.temporal.duration import duration_to_seconds dur = duration_from_hours(2) duration_to_seconds(dur) 7200.0

Modules
duration_from_days
Duration From Days

Create duration from days.

Examples

from rite.temporal.duration import duration_from_days duration_from_days(7) timedelta(days=7)

Functions
duration_from_days
duration_from_days(days: int | float) -> timedelta

Create timedelta from days.

Parameters:

Name Type Description Default
days int | float

Number of days.

required

Returns:

Type Description
timedelta

Timedelta object.

Examples:

>>> duration_from_days(7)
timedelta(days=7)
>>> duration_from_days(1.5)
timedelta(days=1, seconds=43200)
Notes

Standard timedelta constructor.

duration_from_hours
Duration From Hours

Create duration from hours.

Examples

from rite.temporal.duration import duration_from_hours duration_from_hours(24) timedelta(days=1)

Functions
duration_from_hours
duration_from_hours(hours: int | float) -> timedelta

Create timedelta from hours.

Parameters:

Name Type Description Default
hours int | float

Number of hours.

required

Returns:

Type Description
timedelta

Timedelta object.

Examples:

>>> duration_from_hours(24)
timedelta(days=1)
>>> duration_from_hours(1.5)
timedelta(seconds=5400)
Notes

Converts to seconds internally.

duration_from_minutes
Duration From Minutes

Create duration from minutes.

Examples

from rite.temporal.duration import duration_from_minutes duration_from_minutes(60) timedelta(seconds=3600)

Functions
duration_from_minutes
duration_from_minutes(minutes: int | float) -> timedelta

Create timedelta from minutes.

Parameters:

Name Type Description Default
minutes int | float

Number of minutes.

required

Returns:

Type Description
timedelta

Timedelta object.

Examples:

>>> duration_from_minutes(60)
timedelta(seconds=3600)
>>> duration_from_minutes(1.5)
timedelta(seconds=90)
Notes

Converts to seconds internally.

duration_from_seconds
Duration From Seconds

Create duration from seconds.

Examples

from rite.temporal.duration import duration_from_seconds duration_from_seconds(3600) timedelta(seconds=3600)

Functions
duration_from_seconds
duration_from_seconds(seconds: int | float) -> timedelta

Create timedelta from seconds.

Parameters:

Name Type Description Default
seconds int | float

Number of seconds.

required

Returns:

Type Description
timedelta

Timedelta object.

Examples:

>>> duration_from_seconds(3600)
timedelta(seconds=3600)
>>> duration_from_seconds(90.5)
timedelta(seconds=90, microseconds=500000)
Notes

Supports both int and float values.

duration_to_seconds
Duration To Seconds

Convert duration to total seconds.

Examples

from rite.temporal.duration import duration_to_seconds from datetime import timedelta duration_to_seconds(timedelta(hours=1)) 3600.0

Functions
duration_to_seconds
duration_to_seconds(td: timedelta) -> float

Convert timedelta to total seconds.

Parameters:

Name Type Description Default
td timedelta

Timedelta object.

required

Returns:

Type Description
float

Total seconds as float.

Examples:

>>> from datetime import timedelta
>>> duration_to_seconds(timedelta(hours=1))
3600.0
>>> duration_to_seconds(timedelta(days=1))
86400.0
Notes

Returns float for precision.

duration_from_days

Duration From Days

Create duration from days.

Examples

from rite.temporal.duration import duration_from_days duration_from_days(7) timedelta(days=7)

Functions
duration_from_days
duration_from_days(days: int | float) -> timedelta

Create timedelta from days.

Parameters:

Name Type Description Default
days int | float

Number of days.

required

Returns:

Type Description
timedelta

Timedelta object.

Examples:

>>> duration_from_days(7)
timedelta(days=7)
>>> duration_from_days(1.5)
timedelta(days=1, seconds=43200)
Notes

Standard timedelta constructor.

duration_from_hours

Duration From Hours

Create duration from hours.

Examples

from rite.temporal.duration import duration_from_hours duration_from_hours(24) timedelta(days=1)

Functions
duration_from_hours
duration_from_hours(hours: int | float) -> timedelta

Create timedelta from hours.

Parameters:

Name Type Description Default
hours int | float

Number of hours.

required

Returns:

Type Description
timedelta

Timedelta object.

Examples:

>>> duration_from_hours(24)
timedelta(days=1)
>>> duration_from_hours(1.5)
timedelta(seconds=5400)
Notes

Converts to seconds internally.

duration_from_minutes

Duration From Minutes

Create duration from minutes.

Examples

from rite.temporal.duration import duration_from_minutes duration_from_minutes(60) timedelta(seconds=3600)

Functions
duration_from_minutes
duration_from_minutes(minutes: int | float) -> timedelta

Create timedelta from minutes.

Parameters:

Name Type Description Default
minutes int | float

Number of minutes.

required

Returns:

Type Description
timedelta

Timedelta object.

Examples:

>>> duration_from_minutes(60)
timedelta(seconds=3600)
>>> duration_from_minutes(1.5)
timedelta(seconds=90)
Notes

Converts to seconds internally.

duration_from_seconds

Duration From Seconds

Create duration from seconds.

Examples

from rite.temporal.duration import duration_from_seconds duration_from_seconds(3600) timedelta(seconds=3600)

Functions
duration_from_seconds
duration_from_seconds(seconds: int | float) -> timedelta

Create timedelta from seconds.

Parameters:

Name Type Description Default
seconds int | float

Number of seconds.

required

Returns:

Type Description
timedelta

Timedelta object.

Examples:

>>> duration_from_seconds(3600)
timedelta(seconds=3600)
>>> duration_from_seconds(90.5)
timedelta(seconds=90, microseconds=500000)
Notes

Supports both int and float values.

duration_to_seconds

Duration To Seconds

Convert duration to total seconds.

Examples

from rite.temporal.duration import duration_to_seconds from datetime import timedelta duration_to_seconds(timedelta(hours=1)) 3600.0

Functions
duration_to_seconds
duration_to_seconds(td: timedelta) -> float

Convert timedelta to total seconds.

Parameters:

Name Type Description Default
td timedelta

Timedelta object.

required

Returns:

Type Description
float

Total seconds as float.

Examples:

>>> from datetime import timedelta
>>> duration_to_seconds(timedelta(hours=1))
3600.0
>>> duration_to_seconds(timedelta(days=1))
86400.0
Notes

Returns float for precision.

format_human_readable

Format Human Readable

Format datetime to human-readable string.

Examples

from rite.temporal.formatting import format_human_readable from datetime import datetime format_human_readable(datetime(2024, 12, 27, 15, 30))

Functions
format_human_readable
format_human_readable(dt: datetime) -> str

Format datetime to human-readable string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
str

Human-readable formatted string.

Examples:

>>> from datetime import datetime
>>> dt = datetime(2024, 12, 27, 15, 30)
>>> format_human_readable(dt)
'December 27, 2024 at 3:30 PM'
Notes

Uses strftime with full month name. 12-hour format with AM/PM.

format_iso8601

Format ISO 8601

Format datetime to ISO 8601 string.

Examples

from rite.temporal.formatting import format_iso8601 from datetime import datetime, timezone format_iso8601(datetime(2024, 12, 27, tzinfo=timezone.utc))

Functions
format_iso8601
format_iso8601(dt: datetime) -> str

Format datetime to ISO 8601 string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
str

ISO 8601 formatted string.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(2024, 12, 27, 15, 30, tzinfo=timezone.utc)
>>> format_iso8601(dt)
'2024-12-27T15:30:00+00:00'
Notes

Same as datetime.isoformat().

format_rfc3339

Format RFC 3339

Format datetime to RFC 3339 string.

Examples

from rite.temporal.formatting import format_rfc3339 from datetime import datetime, timezone format_rfc3339(datetime(2024, 12, 27, tzinfo=timezone.utc))

Functions
format_rfc3339
format_rfc3339(dt: datetime) -> str

Format datetime to RFC 3339 string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
str

RFC 3339 formatted string.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(2024, 12, 27, 15, 30, tzinfo=timezone.utc)
>>> format_rfc3339(dt)
'2024-12-27T15:30:00+00:00'
Notes

RFC 3339 is profile of ISO 8601. Uses isoformat() with 'T' separator.

formatting

Formatting Module

Date/time formatting utilities.

This submodule provides utilities for formatting datetime objects into various string representations.

Examples

from rite.temporal.formatting import format_iso8601 from datetime import datetime, timezone dt = datetime.now(timezone.utc) format_iso8601(dt)

Modules
format_human_readable
Format Human Readable

Format datetime to human-readable string.

Examples

from rite.temporal.formatting import format_human_readable from datetime import datetime format_human_readable(datetime(2024, 12, 27, 15, 30))

Functions
format_human_readable
format_human_readable(dt: datetime) -> str

Format datetime to human-readable string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
str

Human-readable formatted string.

Examples:

>>> from datetime import datetime
>>> dt = datetime(2024, 12, 27, 15, 30)
>>> format_human_readable(dt)
'December 27, 2024 at 3:30 PM'
Notes

Uses strftime with full month name. 12-hour format with AM/PM.

format_iso8601
Format ISO 8601

Format datetime to ISO 8601 string.

Examples

from rite.temporal.formatting import format_iso8601 from datetime import datetime, timezone format_iso8601(datetime(2024, 12, 27, tzinfo=timezone.utc))

Functions
format_iso8601
format_iso8601(dt: datetime) -> str

Format datetime to ISO 8601 string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
str

ISO 8601 formatted string.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(2024, 12, 27, 15, 30, tzinfo=timezone.utc)
>>> format_iso8601(dt)
'2024-12-27T15:30:00+00:00'
Notes

Same as datetime.isoformat().

format_rfc3339
Format RFC 3339

Format datetime to RFC 3339 string.

Examples

from rite.temporal.formatting import format_rfc3339 from datetime import datetime, timezone format_rfc3339(datetime(2024, 12, 27, tzinfo=timezone.utc))

Functions
format_rfc3339
format_rfc3339(dt: datetime) -> str

Format datetime to RFC 3339 string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
str

RFC 3339 formatted string.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(2024, 12, 27, 15, 30, tzinfo=timezone.utc)
>>> format_rfc3339(dt)
'2024-12-27T15:30:00+00:00'
Notes

RFC 3339 is profile of ISO 8601. Uses isoformat() with 'T' separator.

timezone

Timezone Module

Timezone operations.

This submodule provides utilities for working with timezones using the standard library zoneinfo module (Python 3.9+).

Examples

from rite.temporal.timezone import timezone_get, timezone_convert from datetime import datetime, timezone dt = datetime.now(timezone.utc) timezone_convert(dt, "Europe/Amsterdam")

Modules
timezone_convert
Timezone Convert

Convert datetime to different timezone.

Examples

from rite.temporal.timezone import timezone_convert from datetime import datetime, timezone dt = datetime.now(timezone.utc) timezone_convert(dt, "America/New_York")

Functions
timezone_convert
timezone_convert(dt: datetime, target_tz: str) -> datetime

Convert datetime to target timezone.

Parameters:

Name Type Description Default
dt datetime

Datetime object (should be timezone-aware).

required
target_tz str

Target timezone name (IANA).

required

Returns:

Type Description
datetime

Datetime in target timezone.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(2024, 12, 27, 12, 0, tzinfo=timezone.utc)
>>> timezone_convert(dt, "America/New_York")
datetime.datetime(2024, 12, 27, 7, 0, ...)
Notes

Input datetime should be timezone-aware. Returns new datetime object.

timezone_get
Timezone Get

Get timezone object.

Examples

from rite.temporal.timezone import timezone_get timezone_get("UTC") ZoneInfo(key='UTC')

Functions
timezone_get
timezone_get(name: str = 'UTC') -> ZoneInfo

Get timezone object by name.

Parameters:

Name Type Description Default
name str

Timezone name (IANA). Defaults to UTC.

'UTC'

Returns:

Type Description
ZoneInfo

ZoneInfo timezone object.

Raises:

Type Description
ZoneInfoNotFoundError

If timezone not found.

Examples:

>>> timezone_get("UTC")
ZoneInfo(key='UTC')
>>> timezone_get("America/New_York")
ZoneInfo(key='America/New_York')
Notes

Uses IANA timezone database. Python 3.9+ required.

timezone_list
Timezone List

List available timezones.

Examples

from rite.temporal.timezone import timezone_list zones = timezone_list() "UTC" in zones True

Functions
timezone_list
timezone_list() -> list[str]

Get list of available timezones.

Returns:

Type Description
list[str]

Sorted list of timezone names.

Examples:

>>> zones = timezone_list()
>>> "UTC" in zones
True
>>> "America/New_York" in zones
True
Notes

Uses IANA timezone database. Returns sorted list.

timezone_convert

Timezone Convert

Convert datetime to different timezone.

Examples

from rite.temporal.timezone import timezone_convert from datetime import datetime, timezone dt = datetime.now(timezone.utc) timezone_convert(dt, "America/New_York")

Functions
timezone_convert
timezone_convert(dt: datetime, target_tz: str) -> datetime

Convert datetime to target timezone.

Parameters:

Name Type Description Default
dt datetime

Datetime object (should be timezone-aware).

required
target_tz str

Target timezone name (IANA).

required

Returns:

Type Description
datetime

Datetime in target timezone.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(2024, 12, 27, 12, 0, tzinfo=timezone.utc)
>>> timezone_convert(dt, "America/New_York")
datetime.datetime(2024, 12, 27, 7, 0, ...)
Notes

Input datetime should be timezone-aware. Returns new datetime object.

timezone_get

Timezone Get

Get timezone object.

Examples

from rite.temporal.timezone import timezone_get timezone_get("UTC") ZoneInfo(key='UTC')

Functions
timezone_get
timezone_get(name: str = 'UTC') -> ZoneInfo

Get timezone object by name.

Parameters:

Name Type Description Default
name str

Timezone name (IANA). Defaults to UTC.

'UTC'

Returns:

Type Description
ZoneInfo

ZoneInfo timezone object.

Raises:

Type Description
ZoneInfoNotFoundError

If timezone not found.

Examples:

>>> timezone_get("UTC")
ZoneInfo(key='UTC')
>>> timezone_get("America/New_York")
ZoneInfo(key='America/New_York')
Notes

Uses IANA timezone database. Python 3.9+ required.

timezone_list

Timezone List

List available timezones.

Examples

from rite.temporal.timezone import timezone_list zones = timezone_list() "UTC" in zones True

Functions
timezone_list
timezone_list() -> list[str]

Get list of available timezones.

Returns:

Type Description
list[str]

Sorted list of timezone names.

Examples:

>>> zones = timezone_list()
>>> "UTC" in zones
True
>>> "America/New_York" in zones
True
Notes

Uses IANA timezone database. Returns sorted list.

Submodules

DateTime Operations

Work with datetime objects.

DateTime Module

Date and time operations.

This submodule provides utilities for working with datetime objects including creation, parsing, formatting, and conversions.

Examples

from rite.temporal.datetime import datetime_now, datetime_format now = datetime_now() datetime_format(now) '2024-12-27 15:30:00'

Modules

datetime_now

DateTime Now

Get current datetime.

Examples

from rite.temporal.datetime import datetime_now datetime_now() datetime.datetime(2025, 12, 27, ...)

Functions
datetime_now
datetime_now(tz: timezone | None = None) -> datetime

Get current datetime.

Parameters:

Name Type Description Default
tz timezone | None

Timezone. Defaults to UTC.

None

Returns:

Type Description
datetime

Current datetime object.

Examples:

>>> datetime_now()
datetime.datetime(2025, 12, 27, ...)
>>> datetime_now(timezone.utc)
datetime.datetime(2025, 12, 27, ..., tzinfo=...)
Notes

Uses timezone-aware datetime. Defaults to UTC if no timezone provided.

datetime_from_timestamp

DateTime From Timestamp

Create datetime from UNIX timestamp.

Examples

from rite.temporal.datetime import datetime_from_timestamp datetime_from_timestamp(1735315200)

Functions
datetime_from_timestamp
datetime_from_timestamp(timestamp: int | float, tz: timezone | None = None) -> datetime

Create datetime from UNIX timestamp.

Parameters:

Name Type Description Default
timestamp int | float

UNIX timestamp (seconds since epoch).

required
tz timezone | None

Timezone. Defaults to UTC.

None

Returns:

Type Description
datetime

Datetime object.

Examples:

>>> datetime_from_timestamp(1735315200)
datetime.datetime(2024, 12, 27, ...)
>>> datetime_from_timestamp(0, timezone.utc)
datetime.datetime(1970, 1, 1, 0, 0, tzinfo=...)
Notes

Handles both int and float timestamps. Defaults to UTC timezone.

datetime_to_timestamp

DateTime To Timestamp

Convert datetime to UNIX timestamp.

Examples

from rite.temporal.datetime import datetime_to_timestamp from datetime import datetime datetime_to_timestamp(datetime(2024, 12, 27))

Functions
datetime_to_timestamp
datetime_to_timestamp(dt: datetime) -> int

Convert datetime to UNIX timestamp.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
int

UNIX timestamp as integer.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(1970, 1, 1, tzinfo=timezone.utc)
>>> datetime_to_timestamp(dt)
0
Notes

Returns integer (seconds). For milliseconds, use int(dt.timestamp() * 1000).

datetime_parse

DateTime Parse

Parse datetime from string.

Examples

from rite.temporal.datetime import datetime_parse datetime_parse("2024-12-27", "%Y-%m-%d")

Functions
datetime_parse
datetime_parse(date_string: str, fmt: str = '%Y-%m-%d %H:%M:%S') -> datetime

Parse datetime from string.

Parameters:

Name Type Description Default
date_string str

Date/time string.

required
fmt str

Format string. Defaults to "%Y-%m-%d %H:%M:%S".

'%Y-%m-%d %H:%M:%S'

Returns:

Type Description
datetime

Parsed datetime object.

Examples:

>>> datetime_parse("2024-12-27", "%Y-%m-%d")
datetime.datetime(2024, 12, 27, 0, 0)
>>> datetime_parse("27/12/2024 15:30", "%d/%m/%Y %H:%M")
datetime.datetime(2024, 12, 27, 15, 30)
Notes

See strftime documentation for format codes. Returns naive datetime (no timezone).

datetime_format

DateTime Format

Format datetime to string.

Examples

from rite.temporal.datetime import datetime_format from datetime import datetime datetime_format(datetime.now())

Functions
datetime_format
datetime_format(dt: datetime, fmt: str = '%Y-%m-%d %H:%M:%S') -> str

Format datetime to string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required
fmt str

Format string. Defaults to "%Y-%m-%d %H:%M:%S".

'%Y-%m-%d %H:%M:%S'

Returns:

Type Description
str

Formatted datetime string.

Examples:

>>> from datetime import datetime
>>> dt = datetime(2024, 12, 27, 15, 30)
>>> datetime_format(dt)
'2024-12-27 15:30:00'
>>> datetime_format(dt, "%d/%m/%Y")
'27/12/2024'
Notes

See strftime documentation for format codes.

datetime_to_iso

DateTime To ISO

Convert datetime to ISO 8601 string.

Examples

from rite.temporal.datetime import datetime_to_iso from datetime import datetime datetime_to_iso(datetime.now())

Functions
datetime_to_iso
datetime_to_iso(dt: datetime) -> str

Convert datetime to ISO 8601 string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
str

ISO 8601 formatted string.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(2024, 12, 27, 15, 30, tzinfo=timezone.utc)
>>> datetime_to_iso(dt)
'2024-12-27T15:30:00+00:00'
Notes

Uses isoformat() method. Includes timezone if present.

Duration Management

Create and manage time durations.

Duration Module

Time duration operations.

This submodule provides utilities for creating and manipulating time durations using timedelta objects.

Examples

from rite.temporal.duration import duration_from_hours from rite.temporal.duration import duration_to_seconds dur = duration_from_hours(2) duration_to_seconds(dur) 7200.0

Modules

duration_from_seconds

Duration From Seconds

Create duration from seconds.

Examples

from rite.temporal.duration import duration_from_seconds duration_from_seconds(3600) timedelta(seconds=3600)

Functions
duration_from_seconds
duration_from_seconds(seconds: int | float) -> timedelta

Create timedelta from seconds.

Parameters:

Name Type Description Default
seconds int | float

Number of seconds.

required

Returns:

Type Description
timedelta

Timedelta object.

Examples:

>>> duration_from_seconds(3600)
timedelta(seconds=3600)
>>> duration_from_seconds(90.5)
timedelta(seconds=90, microseconds=500000)
Notes

Supports both int and float values.

duration_from_minutes

Duration From Minutes

Create duration from minutes.

Examples

from rite.temporal.duration import duration_from_minutes duration_from_minutes(60) timedelta(seconds=3600)

Functions
duration_from_minutes
duration_from_minutes(minutes: int | float) -> timedelta

Create timedelta from minutes.

Parameters:

Name Type Description Default
minutes int | float

Number of minutes.

required

Returns:

Type Description
timedelta

Timedelta object.

Examples:

>>> duration_from_minutes(60)
timedelta(seconds=3600)
>>> duration_from_minutes(1.5)
timedelta(seconds=90)
Notes

Converts to seconds internally.

duration_from_hours

Duration From Hours

Create duration from hours.

Examples

from rite.temporal.duration import duration_from_hours duration_from_hours(24) timedelta(days=1)

Functions
duration_from_hours
duration_from_hours(hours: int | float) -> timedelta

Create timedelta from hours.

Parameters:

Name Type Description Default
hours int | float

Number of hours.

required

Returns:

Type Description
timedelta

Timedelta object.

Examples:

>>> duration_from_hours(24)
timedelta(days=1)
>>> duration_from_hours(1.5)
timedelta(seconds=5400)
Notes

Converts to seconds internally.

duration_from_days

Duration From Days

Create duration from days.

Examples

from rite.temporal.duration import duration_from_days duration_from_days(7) timedelta(days=7)

Functions
duration_from_days
duration_from_days(days: int | float) -> timedelta

Create timedelta from days.

Parameters:

Name Type Description Default
days int | float

Number of days.

required

Returns:

Type Description
timedelta

Timedelta object.

Examples:

>>> duration_from_days(7)
timedelta(days=7)
>>> duration_from_days(1.5)
timedelta(days=1, seconds=43200)
Notes

Standard timedelta constructor.

duration_to_seconds

Duration To Seconds

Convert duration to total seconds.

Examples

from rite.temporal.duration import duration_to_seconds from datetime import timedelta duration_to_seconds(timedelta(hours=1)) 3600.0

Functions
duration_to_seconds
duration_to_seconds(td: timedelta) -> float

Convert timedelta to total seconds.

Parameters:

Name Type Description Default
td timedelta

Timedelta object.

required

Returns:

Type Description
float

Total seconds as float.

Examples:

>>> from datetime import timedelta
>>> duration_to_seconds(timedelta(hours=1))
3600.0
>>> duration_to_seconds(timedelta(days=1))
86400.0
Notes

Returns float for precision.

Timezone Handling

Manage timezones and conversions.

Timezone Module

Timezone operations.

This submodule provides utilities for working with timezones using the standard library zoneinfo module (Python 3.9+).

Examples

from rite.temporal.timezone import timezone_get, timezone_convert from datetime import datetime, timezone dt = datetime.now(timezone.utc) timezone_convert(dt, "Europe/Amsterdam")

Modules

timezone_get

Timezone Get

Get timezone object.

Examples

from rite.temporal.timezone import timezone_get timezone_get("UTC") ZoneInfo(key='UTC')

Functions
timezone_get
timezone_get(name: str = 'UTC') -> ZoneInfo

Get timezone object by name.

Parameters:

Name Type Description Default
name str

Timezone name (IANA). Defaults to UTC.

'UTC'

Returns:

Type Description
ZoneInfo

ZoneInfo timezone object.

Raises:

Type Description
ZoneInfoNotFoundError

If timezone not found.

Examples:

>>> timezone_get("UTC")
ZoneInfo(key='UTC')
>>> timezone_get("America/New_York")
ZoneInfo(key='America/New_York')
Notes

Uses IANA timezone database. Python 3.9+ required.

timezone_convert

Timezone Convert

Convert datetime to different timezone.

Examples

from rite.temporal.timezone import timezone_convert from datetime import datetime, timezone dt = datetime.now(timezone.utc) timezone_convert(dt, "America/New_York")

Functions
timezone_convert
timezone_convert(dt: datetime, target_tz: str) -> datetime

Convert datetime to target timezone.

Parameters:

Name Type Description Default
dt datetime

Datetime object (should be timezone-aware).

required
target_tz str

Target timezone name (IANA).

required

Returns:

Type Description
datetime

Datetime in target timezone.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(2024, 12, 27, 12, 0, tzinfo=timezone.utc)
>>> timezone_convert(dt, "America/New_York")
datetime.datetime(2024, 12, 27, 7, 0, ...)
Notes

Input datetime should be timezone-aware. Returns new datetime object.

timezone_list

Timezone List

List available timezones.

Examples

from rite.temporal.timezone import timezone_list zones = timezone_list() "UTC" in zones True

Functions
timezone_list
timezone_list() -> list[str]

Get list of available timezones.

Returns:

Type Description
list[str]

Sorted list of timezone names.

Examples:

>>> zones = timezone_list()
>>> "UTC" in zones
True
>>> "America/New_York" in zones
True
Notes

Uses IANA timezone database. Returns sorted list.

Calendar Utilities

Calendar and date calculations.

Calendar Module

Calendar operations.

This submodule provides utilities for calendar operations like leap years, days in month, and weekday calculations.

Examples

from rite.temporal.calendar import calendar_is_leap_year from rite.temporal.calendar import calendar_month_days calendar_is_leap_year(2024) True calendar_month_days(2024, 2) 29

Modules

calendar_is_leap_year

Calendar Is Leap Year

Check if year is leap year.

Examples

from rite.temporal.calendar import calendar_is_leap_year calendar_is_leap_year(2024) True

Functions
calendar_is_leap_year
calendar_is_leap_year(year: int) -> bool

Check if year is a leap year.

Parameters:

Name Type Description Default
year int

Year to check.

required

Returns:

Type Description
bool

True if leap year, False otherwise.

Examples:

>>> calendar_is_leap_year(2024)
True
>>> calendar_is_leap_year(2023)
False
>>> calendar_is_leap_year(2000)
True
Notes

Uses calendar.isleap().

calendar_month_days

Calendar Month Days

Get number of days in month.

Examples

from rite.temporal.calendar import calendar_month_days calendar_month_days(2024, 2) 29

Functions
calendar_month_days
calendar_month_days(year: int, month: int) -> int

Get number of days in month.

Parameters:

Name Type Description Default
year int

Year.

required
month int

Month (1-12).

required

Returns:

Type Description
int

Number of days in month.

Examples:

>>> calendar_month_days(2024, 2)
29
>>> calendar_month_days(2023, 2)
28
>>> calendar_month_days(2024, 4)
30
Notes

Uses calendar.monthrange().

calendar_weekday

Calendar Weekday

Get weekday for date.

Examples

from rite.temporal.calendar import calendar_weekday calendar_weekday(2024, 12, 27) 4

Functions
calendar_weekday
calendar_weekday(year: int, month: int, day: int) -> int

Get weekday for date.

Parameters:

Name Type Description Default
year int

Year.

required
month int

Month (1-12).

required
day int

Day of month.

required

Returns:

Type Description
int

Weekday (0=Monday, 6=Sunday).

Examples:

>>> calendar_weekday(2024, 12, 27)
4
>>> calendar_weekday(2024, 1, 1)
0
Notes

Uses calendar.weekday(). 0=Monday, 6=Sunday.

Formatting

Format dates and times.

Formatting Module

Date/time formatting utilities.

This submodule provides utilities for formatting datetime objects into various string representations.

Examples

from rite.temporal.formatting import format_iso8601 from datetime import datetime, timezone dt = datetime.now(timezone.utc) format_iso8601(dt)

Modules

format_iso8601

Format ISO 8601

Format datetime to ISO 8601 string.

Examples

from rite.temporal.formatting import format_iso8601 from datetime import datetime, timezone format_iso8601(datetime(2024, 12, 27, tzinfo=timezone.utc))

Functions
format_iso8601
format_iso8601(dt: datetime) -> str

Format datetime to ISO 8601 string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
str

ISO 8601 formatted string.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(2024, 12, 27, 15, 30, tzinfo=timezone.utc)
>>> format_iso8601(dt)
'2024-12-27T15:30:00+00:00'
Notes

Same as datetime.isoformat().

format_rfc3339

Format RFC 3339

Format datetime to RFC 3339 string.

Examples

from rite.temporal.formatting import format_rfc3339 from datetime import datetime, timezone format_rfc3339(datetime(2024, 12, 27, tzinfo=timezone.utc))

Functions
format_rfc3339
format_rfc3339(dt: datetime) -> str

Format datetime to RFC 3339 string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
str

RFC 3339 formatted string.

Examples:

>>> from datetime import datetime, timezone
>>> dt = datetime(2024, 12, 27, 15, 30, tzinfo=timezone.utc)
>>> format_rfc3339(dt)
'2024-12-27T15:30:00+00:00'
Notes

RFC 3339 is profile of ISO 8601. Uses isoformat() with 'T' separator.

format_human_readable

Format Human Readable

Format datetime to human-readable string.

Examples

from rite.temporal.formatting import format_human_readable from datetime import datetime format_human_readable(datetime(2024, 12, 27, 15, 30))

Functions
format_human_readable
format_human_readable(dt: datetime) -> str

Format datetime to human-readable string.

Parameters:

Name Type Description Default
dt datetime

Datetime object.

required

Returns:

Type Description
str

Human-readable formatted string.

Examples:

>>> from datetime import datetime
>>> dt = datetime(2024, 12, 27, 15, 30)
>>> format_human_readable(dt)
'December 27, 2024 at 3:30 PM'
Notes

Uses strftime with full month name. 12-hour format with AM/PM.

Examples

Basic Usage

from rite.temporal import (
    datetime_now,
    datetime_to_iso,
    duration_from_hours,
    calendar_is_leap_year
)

# Get current datetime
now = datetime_now()

# Convert to ISO format
iso_string = datetime_to_iso(now)

# Create duration
three_hours = duration_from_hours(3)

# Check leap year
is_leap = calendar_is_leap_year(2024)  # True

Working with Timezones

from rite.temporal import (
    datetime_now,
    timezone_get,
    timezone_convert,
    timezone_list
)
from datetime import datetime

# Get current datetime with timezone
now = datetime_now()
utc_tz = timezone_get("UTC")

# Convert between timezones
ny_tz = timezone_get("America/New_York")
converted = timezone_convert(now, utc_tz, ny_tz)

# List available timezones
all_zones = timezone_list()