Module polars_core::doc::time [−][src]
Expand description
DateTime related functionality
Polars supports most data types in Arrow related to time and dates. The datatypes that have most utility support are:
- Date32
- A Date object representing the time in days since the unix epoch.
- Chrono support type: NaiveDate
- Underlying data type:
i32
- Date64
- A DateTime object representing the time in milliseconds since the unix epoch.
- Chrono support type: NaiveDateTime
- Underlying data type:
i64
Utility methods
Given a Date32
or Date64
ChunkedArray
one can extract various temporal information
Chrono
Polars has interopatibilty with the chrono
library.
Example
use chrono::NaiveTime; use polars_core::prelude::*;; // We can create a ChunkedArray from NaiveTime objects fn from_naive_time_to_time64(time_values: &[NaiveTime]) -> Time64NanosecondChunked { Time64NanosecondChunked::new_from_naive_time("name", time_values) } // Or from a ChunkedArray to NaiveTime objects fn from_time64_to_naive_time(ca: &Time64NanosecondChunked) -> Vec<Option<NaiveTime>> { ca.as_naive_time() }
String formatting
We can also directly parse strings given a predefined fmt: &str
. This uses chrono’s
NaiveTime::parse_from_str
under the hood. So look there for the different formatting options. If the string parsing is not
successful, the value will be None
.
Examples
Parsing from Utf8Chunked
use polars_core::prelude::*; use chrono::NaiveTime; // String values to parse, Note that the 2nd value is not a correct time value. let time_values = &["23:56:04", "26:00:99", "12:39:08"]; // Parsing fmt let fmt = "%H:%M:%S"; // Create the ChunkedArray let ca = Utf8Chunked::new_from_slice("time", time_values); // Parse strings as DateTime objects let date_ca = ca.as_date64(Some(fmt));
Parsing directly from slice
use polars_core::prelude::*; use chrono::NaiveDateTime; // String values to parse, Note that the 2nd value is not a correct time value. let datetime_values = &[ "1988-08-25 00:00:16", "2015-09-05 23:56:04", "2012-12-21 00:00:00", ]; // Parsing fmt let fmt = "%Y-%m-%d %H:%M:%S"; // Create the ChunkedArray let ca = Date64Chunked::parse_from_str_slice("datetime as ms since Epoch", datetime_values, fmt); // or dates in different precision (days) let ca = Date32Chunked::parse_from_str_slice("date as days since Epoch", datetime_values, fmt);