Skip to main content

Module time

Module time 

Source
Available on crate feature time only.
Expand description

Conversions to and from time’s Date, Duration, OffsetDateTime, PrimitiveDateTime, Time, UtcDateTime and UtcOffset.

Β§Setup

To use this feature, add this to your Cargo.toml:

[dependencies]
time = "0.3"
pyo3 = { version = "0.30.0", features = ["time"] }

Note that you must use compatible versions of time and PyO3. The required time version may vary based on the version of PyO3.

use time::{Duration, OffsetDateTime, PrimitiveDateTime, Date, Time, Month};
use pyo3::{Python, PyResult, IntoPyObject, types::PyAnyMethods};

fn main() -> PyResult<()> {
    Python::initialize();
    Python::attach(|py| {
        // Create a fixed date and time (2022-01-01 12:00:00 UTC)
        let date = Date::from_calendar_date(2022, Month::January, 1).unwrap();
        let time = Time::from_hms(12, 0, 0).unwrap();
        let primitive_dt = PrimitiveDateTime::new(date, time);

        // Convert to OffsetDateTime with UTC offset
        let datetime = primitive_dt.assume_utc();

        // Create a duration of 1 hour
        let duration = Duration::hours(1);

        // Convert to Python objects
        let py_datetime = datetime.into_pyobject(py)?;
        let py_timedelta = duration.into_pyobject(py)?;

        // Add the duration to the datetime in Python
        let py_result = py_datetime.add(py_timedelta)?;

        // Convert the result back to Rust
        let result: OffsetDateTime = py_result.extract()?;
        assert_eq!(result.hour(), 13);

        Ok(())
    })
}

Re-exportsΒ§

use crate::exceptions::PyOverflowError; πŸ”’
use crate::exceptions::PyTypeError; πŸ”’
use crate::exceptions::PyValueError; πŸ”’
use crate::inspect::PyStaticExpr; πŸ”’ experimental-inspect
use crate::types::datetime::PyDateAccess; πŸ”’
use crate::types::datetime::PyDeltaAccess; πŸ”’
use crate::types::PyAnyMethods; πŸ”’
use crate::types::PyDate; πŸ”’
use crate::types::PyDateTime; πŸ”’
use crate::types::PyDelta; πŸ”’
use crate::types::PyNone; πŸ”’
use crate::types::PyTime; πŸ”’
use crate::types::PyTimeAccess; πŸ”’
use crate::types::PyTzInfo; πŸ”’
use crate::types::PyTzInfoAccess; πŸ”’
use crate::Borrowed; πŸ”’
use crate::Bound; πŸ”’
use crate::FromPyObject; πŸ”’
use crate::FromPyObject; πŸ”’
use crate::IntoPyObject; πŸ”’
use crate::IntoPyObject; πŸ”’
use crate::PyAny; πŸ”’
use crate::PyErr; πŸ”’
use crate::PyResult; πŸ”’
use crate::Python; πŸ”’
use crate::PyTypeInfo; πŸ”’ experimental-inspect
use crate::type_hint_identifier; πŸ”’ experimental-inspect
use time::Date; πŸ”’
use time::Duration; πŸ”’
use time::Month; πŸ”’
use time::OffsetDateTime; πŸ”’
use time::PrimitiveDateTime; πŸ”’
use time::Time; πŸ”’
use time::UtcDateTime; πŸ”’
use time::UtcOffset; πŸ”’

MacrosΒ§

impl_into_py_for_ref πŸ”’
month_from_number πŸ”’

ConstantsΒ§

SECONDS_PER_DAY πŸ”’

FunctionsΒ§

extract_date_time πŸ”’
⚠️ Internal Docs ⚠️ Not Public API πŸ‘‰ Official Docs Here