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-inspectuse 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-localuse crate::exceptions::PyRuntimeError;🔒chrono-localuse crate::sync::PyOnceLock;🔒chrono-localuse crate::types::PyString;🔒chrono-localuse crate::types::PyStringMethods;🔒chrono-localuse crate::PyTypeInfo;🔒experimental-inspectuse crate::type_hint_identifier;🔒experimental-inspectuse chrono::Local;🔒chrono-localuse 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;🔒