icu_datetime crates.io

icu_datetime is one of the [ICU4X] components.

This API provides necessary functionality for formatting date and time to user readable textual representation.

[DateTimeFormat] is the main structure of the component. It accepts a set of arguments which allow it to collect necessary data from the [DataProvider], and once instantiated, can be used to quickly format any date and time provided.

Examples

```rust use icu::locid::Locale; use icu::locid::macros::langid; use icu::calendar::Gregorian; use icu::datetime::{DateTimeFormat, DateTimeFormatOptions, mock::parsegregorianfrom_str, options::length};

let provider = icutestdata::getprovider();

let locale: Locale = langid!("en").into();

// See the next code example for a more ergonomic example with .into(). let options = DateTimeFormatOptions::Length(length::Bag { date: Some(length::Date::Medium), time: Some(length::Time::Short), ..Default::default() });

let dtf = DateTimeFormat::::try_new(locale, &provider, &options) .expect("Failed to create DateTimeFormat instance.");

let date = parsegregorianfrom_str("2020-09-12T12:35:00") .expect("Failed to parse date.");

let formatteddate = dtf.format(&date); asserteq!(formatteddate.tostring(), "Sep 12, 2020, 12:35 PM"); ```

The options can be created more ergonomically using the Into trait to automatically convert a [options::length::Bag] into a [DateTimeFormatOptions::Length].

```rust use icu::locid::Locale; use icu::locid::macros::langid; use icu::calendar::Gregorian; use icu::datetime::{DateTimeFormat, DateTimeFormatOptions, options::length}; let options = length::Bag { date: Some(length::Date::Medium), time: Some(length::Time::Short), ..Default::default() }.into();

let dtf = DateTimeFormat::::try_new(locale, &provider, &options); ```

At the moment, the crate provides only options using the [Length] bag, but in the future, we expect to add more ways to customize the output, like skeletons, and components.

Notice: Rust at the moment does not have a canonical way to represent date and time. We use [DateTime] as an example of the data necessary for ICU [DateTimeFormat] to work, and we hope to work with the community to develop core date and time APIs that will work as an input for this component. [DateTime] additionally has support for non-Gregorian calendars, which this module will eventually be able to format.

More Information

For more information on development, authorship, contributing etc. please visit ICU4X home page.