Expand description
Enumerations over field sets.
These enumerations can be used when the field set is not known at compile time. However, they may contribute negatively to the binary size of the formatters.
The most general type is CompositeFieldSet
, which supports all field
sets in a single enumeration. CompositeDateTimeFieldSet
is a good
choice when you don’t need to format time zones.
Summary of all the types:
Type | Supported Field Sets |
---|---|
DateFieldSet | Date |
CalendarPeriodFieldSet | Calendar Period |
TimeFieldSet | Time |
ZoneFieldSet | Zone |
DateAndTimeFieldSet | Date + Time |
CompositeDateTimeFieldSet | Date, Calendar Period, Time, Date + Time |
CompositeFieldSet | All |
§Examples
Format with the time display depending on a runtime boolean:
use icu::calendar::Date;
use icu::datetime::fieldsets;
use icu::datetime::fieldsets::enums::CompositeDateTimeFieldSet;
use icu::datetime::input::{DateTime, Time};
use icu::datetime::DateTimeFormatter;
use icu::locale::locale;
use writeable::Writeable;
fn composite_field_set(
should_display_time: bool,
) -> CompositeDateTimeFieldSet {
if should_display_time {
let field_set_with_options = fieldsets::MD::medium().with_time_hm();
CompositeDateTimeFieldSet::DateTime(
fieldsets::enums::DateAndTimeFieldSet::MDT(
field_set_with_options,
),
)
} else {
let field_set_with_options = fieldsets::MD::medium();
CompositeDateTimeFieldSet::Date(fieldsets::enums::DateFieldSet::MD(
field_set_with_options,
))
}
}
let datetime = DateTime {
date: Date::try_new_iso(2025, 1, 15).unwrap(),
time: Time::try_new(16, 0, 0, 0).unwrap(),
};
let with_time = DateTimeFormatter::try_new(
locale!("en-US").into(),
composite_field_set(true),
)
.unwrap();
let without_time = DateTimeFormatter::try_new(
locale!("en-US").into(),
composite_field_set(false),
)
.unwrap();
assert_eq!(with_time.format(&datetime).to_string(), "Jan 15, 4:00 PM");
assert_eq!(without_time.format(&datetime).to_string(), "Jan 15");
Enums§
- Calendar
Period Field Set - An enumeration over all possible calendar period field sets.
- Composite
Date Time Field Set - An enum supporting date, calendar period, time, and date+time field sets and options.
- Composite
Field Set - An enum supporting all possible field sets and options.
- Date
AndTime Field Set - An enumeration over all possible date+time composite field sets.
- Date
Field Set - An enumeration over all possible date field sets.
- Time
Field Set - An enumeration over all possible time field sets.
- Zone
Field Set - An enumeration over all possible zone field sets.
Type Aliases§
- Zoned
Date AndTime Field Set - Type alias representing all possible date + time + time zone field sets.
- Zoned
Date Field Set - Type alias representing all possible date + time zone field sets.
- Zoned
Time Field Set - Type alias representing all possible time + time zone field sets.