Skip to main content

Module chrono

Module chrono 

Source
Available on crate feature chrono only.
Expand description

Conversions to and from chrono’s Duration, NaiveDate, NaiveTime, DateTime<Tz>, FixedOffset, and Utc.

§Setup

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

[dependencies]
chrono = "0.4"
pyo3 = { version = "0.30.0", features = ["chrono"] }

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

§Example: Convert a datetime.datetime to chrono’s DateTime<Utc>

use chrono::{DateTime, Duration, TimeZone, Utc};
use pyo3::{Python, PyResult, IntoPyObject, types::PyAnyMethods};

fn main() -> PyResult<()> {
    Python::initialize();
    Python::attach(|py| {
        // Build some chrono values
        let chrono_datetime = Utc.with_ymd_and_hms(2022, 1, 1, 12, 0, 0).unwrap();
        let chrono_duration = Duration::seconds(1);
        // Convert them to Python
        let py_datetime = chrono_datetime.into_pyobject(py)?;
        let py_timedelta = chrono_duration.into_pyobject(py)?;
        // Do an operation in Python
        let py_sum = py_datetime.call_method1("__add__", (py_timedelta,))?;
        // Convert back to Rust
        let chrono_sum: DateTime<Utc> = py_sum.extract()?;
        println!("DateTime<Utc>: {}", chrono_datetime);
        Ok(())
    })
}

Re-exports§

use crate::conversion::FromPyObjectOwned; 🔒
use crate::conversion::IntoPyObject; 🔒
use crate::exceptions::PyTypeError; 🔒
use crate::exceptions::PyUserWarning; 🔒
use crate::exceptions::PyValueError; 🔒
use crate::inspect::PyStaticExpr; 🔒 experimental-inspect
use crate::intern; 🔒
use crate::types::PyNone; 🔒
use crate::types::any::PyAnyMethods; 🔒
use crate::types::PyDate; 🔒
use crate::types::PyDateTime; 🔒
use crate::types::PyDelta; 🔒
use crate::types::PyTime; 🔒
use crate::types::PyTzInfo; 🔒
use crate::types::PyTzInfoAccess; 🔒
use crate::types::PyDateAccess; 🔒
use crate::types::PyDeltaAccess; 🔒
use crate::types::PyTimeAccess; 🔒
use crate::Borrowed; 🔒
use crate::Bound; 🔒
use crate::FromPyObject; 🔒
use crate::FromPyObject; 🔒
use crate::IntoPyObjectExt; 🔒
use crate::PyAny; 🔒
use crate::PyErr; 🔒
use crate::PyResult; 🔒
use crate::Python; 🔒
use crate::Py; 🔒 chrono-local
use crate::exceptions::PyRuntimeError; 🔒 chrono-local
use crate::sync::PyOnceLock; 🔒 chrono-local
use crate::types::PyString; 🔒 chrono-local
use crate::types::PyStringMethods; 🔒 chrono-local
use crate::PyTypeInfo; 🔒 experimental-inspect
use crate::type_hint_identifier; 🔒 experimental-inspect
use chrono::Local; 🔒 chrono-local
use chrono::offset::FixedOffset; 🔒
use chrono::offset::Utc; 🔒
use chrono::DateTime; 🔒
use chrono::Datelike; 🔒
use chrono::Duration; 🔒
use chrono::LocalResult; 🔒
use chrono::NaiveDate; 🔒
use chrono::NaiveDateTime; 🔒
use chrono::NaiveTime; 🔒
use chrono::Offset; 🔒
use chrono::TimeZone; 🔒
use chrono::Timelike; 🔒

Structs§

DateArgs 🔒
TimeArgs 🔒

Functions§

py_date_to_naive_date 🔒
py_datetime_to_datetime_with_timezone 🔒
py_time_to_naive_time 🔒
warn_truncated_leap_second 🔒
⚠️ Internal Docs ⚠️ Not Public API 👉 Official Docs Here