#[non_exhaustive]pub struct O {}
Expand description
“GMT-05:00” ⇒ UTC offset, long length
§Examples
use icu::calendar::{Date, Time};
use icu::timezone::{TimeZoneBcp47Id, TimeZoneInfo, UtcOffset, ZoneVariant};
use icu::datetime::TimeFormatter;
use icu::datetime::fieldsets::O;
use icu::locale::locale;
use tinystr::tinystr;
use writeable::assert_writeable_eq;
let fmt = TimeFormatter::try_new(
locale!("en").into(),
O::new(),
)
.unwrap();
// Time zone info for America/Chicago in the summer
let zone = TimeZoneBcp47Id(tinystr!(8, "uschi"))
.with_offset("-05".parse().ok())
.at_time((Date::try_new_iso(2022, 8, 29).unwrap(), Time::midnight()))
.with_zone_variant(ZoneVariant::Daylight);
assert_writeable_eq!(
fmt.format(&zone),
"GMT-05:00"
);
All shapes of time zones can be formatted with this style.
use icu::calendar::{Date, Time};
use icu::datetime::TimeFormatter;
use icu::datetime::fieldsets::O;
use icu::timezone::{TimeZoneBcp47Id, UtcOffset, ZoneVariant};
use tinystr::tinystr;
use icu::locale::locale;
use writeable::assert_writeable_eq;
let utc_offset = "-06".parse().unwrap();
let time_zone_basic = TimeZoneBcp47Id(tinystr!(8, "uschi")).with_offset(Some(utc_offset));
let date = Date::try_new_iso(2024, 10, 18).unwrap();
let time = Time::midnight();
let time_zone_at_time = time_zone_basic.at_time((date, time));
let time_zone_full = time_zone_at_time.with_zone_variant(ZoneVariant::Standard);
let formatter = TimeFormatter::try_new(
locale!("en-US").into(),
O::new(),
)
.unwrap();
assert_writeable_eq!(
formatter.format(&utc_offset),
"GMT-06:00"
);
assert_writeable_eq!(
formatter.format(&time_zone_basic),
"GMT-06:00"
);
assert_writeable_eq!(
formatter.format(&time_zone_at_time),
"GMT-06:00"
);
assert_writeable_eq!(
formatter.format(&time_zone_full),
"GMT-06:00"
);
Implementations§
Trait Implementations§
source§impl DateTimeMarkers for O
impl DateTimeMarkers for O
source§type GluePatternV1Marker = NeverMarker<GluePatternV1<'static>>
type GluePatternV1Marker = NeverMarker<GluePatternV1<'static>>
Marker for loading the date/time glue pattern.
source§impl DateTimeNamesMarker for O
impl DateTimeNamesMarker for O
type YearNames = ()
type MonthNames = ()
type WeekdayNames = ()
type DayPeriodNames = ()
type ZoneEssentials = TimeZoneEssentialsV1Marker
type ZoneLocations = ()
type ZoneGenericLong = ()
type ZoneGenericShort = ()
type ZoneSpecificLong = ()
type ZoneSpecificShort = ()
type MetazoneLookup = ()
source§impl GetField<CompositeFieldSet> for O
impl GetField<CompositeFieldSet> for O
source§fn get_field(&self) -> CompositeFieldSet
fn get_field(&self) -> CompositeFieldSet
Returns the value of this trait’s field
T
.source§impl ZoneMarkers for O
impl ZoneMarkers for O
source§type TimeZoneIdInput = ()
type TimeZoneIdInput = ()
Marker for resolving the time zone id input field.
source§type TimeZoneOffsetInput = Option<UtcOffset>
type TimeZoneOffsetInput = Option<UtcOffset>
Marker for resolving the time zone offset input field.
source§type TimeZoneVariantInput = ()
type TimeZoneVariantInput = ()
Marker for resolving the time zone variant input field.
source§type TimeZoneLocalTimeInput = ()
type TimeZoneLocalTimeInput = ()
Marker for resolving the time zone non-location display names, which depend on the datetime.
source§type EssentialsV1Marker = TimeZoneEssentialsV1Marker
type EssentialsV1Marker = TimeZoneEssentialsV1Marker
Marker for loading core time zone data.
source§type LocationsV1Marker = NeverMarker<LocationsV1<'static>>
type LocationsV1Marker = NeverMarker<LocationsV1<'static>>
Marker for loading location names for time zone formatting
source§type GenericLongV1Marker = NeverMarker<MetazoneGenericNamesV1<'static>>
type GenericLongV1Marker = NeverMarker<MetazoneGenericNamesV1<'static>>
Marker for loading generic long time zone names.
source§type GenericShortV1Marker = NeverMarker<MetazoneGenericNamesV1<'static>>
type GenericShortV1Marker = NeverMarker<MetazoneGenericNamesV1<'static>>
Marker for loading generic short time zone names.
source§type SpecificLongV1Marker = NeverMarker<MetazoneSpecificNamesV1<'static>>
type SpecificLongV1Marker = NeverMarker<MetazoneSpecificNamesV1<'static>>
Marker for loading specific long time zone names.
source§type SpecificShortV1Marker = NeverMarker<MetazoneSpecificNamesV1<'static>>
type SpecificShortV1Marker = NeverMarker<MetazoneSpecificNamesV1<'static>>
Marker for loading generic short time zone names.
source§type MetazonePeriodV1Marker = NeverMarker<MetazonePeriodV1<'static>>
type MetazonePeriodV1Marker = NeverMarker<MetazonePeriodV1<'static>>
Marker for loading metazone periods.
impl Copy for O
impl Eq for O
impl StructuralPartialEq for O
impl UnstableSealed for O
Auto Trait Implementations§
impl Freeze for O
impl RefUnwindSafe for O
impl Send for O
impl Sync for O
impl Unpin for O
impl UnwindSafe for O
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<M, T> DateTimeNamesFrom<M> for Twhere
M: DateTimeNamesMarker,
T: DateTimeNamesMarker,
<<T as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1Marker, FieldLength>>::Container: From<<<M as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1Marker, FieldLength>>::Container>,
<<T as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1Marker, (Month, FieldLength)>>::Container: From<<<M as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1Marker, (Month, FieldLength)>>::Container>,
<<T as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1Marker, (Weekday, FieldLength)>>::Container: From<<<M as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1Marker, (Weekday, FieldLength)>>::Container>,
<<T as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1Marker, FieldLength>>::Container: From<<<M as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1Marker, FieldLength>>::Container>,
<<T as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1Marker, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1Marker, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1Marker, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1Marker, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1Marker, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1Marker, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1Marker, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1Marker, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1Marker, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1Marker, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1Marker, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1Marker, ()>>::Container>,
<<T as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1Marker, ()>>::Container: From<<<M as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1Marker, ()>>::Container>,
impl<M, T> DateTimeNamesFrom<M> for Twhere
M: DateTimeNamesMarker,
T: DateTimeNamesMarker,
<<T as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1Marker, FieldLength>>::Container: From<<<M as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1Marker, FieldLength>>::Container>,
<<T as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1Marker, (Month, FieldLength)>>::Container: From<<<M as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1Marker, (Month, FieldLength)>>::Container>,
<<T as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1Marker, (Weekday, FieldLength)>>::Container: From<<<M as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1Marker, (Weekday, FieldLength)>>::Container>,
<<T as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1Marker, FieldLength>>::Container: From<<<M as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1Marker, FieldLength>>::Container>,
<<T as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1Marker, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1Marker, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1Marker, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1Marker, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1Marker, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1Marker, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1Marker, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1Marker, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1Marker, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1Marker, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1Marker, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1Marker, ()>>::Container>,
<<T as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1Marker, ()>>::Container: From<<<M as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1Marker, ()>>::Container>,
fn map_year_names( other: <<M as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1Marker, FieldLength>>::Container, ) -> <<T as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1Marker, FieldLength>>::Container
fn map_month_names( other: <<M as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1Marker, (Month, FieldLength)>>::Container, ) -> <<T as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1Marker, (Month, FieldLength)>>::Container
fn map_weekday_names( other: <<M as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1Marker, (Weekday, FieldLength)>>::Container, ) -> <<T as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1Marker, (Weekday, FieldLength)>>::Container
fn map_day_period_names( other: <<M as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1Marker, FieldLength>>::Container, ) -> <<T as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1Marker, FieldLength>>::Container
fn map_zone_essentials( other: <<M as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1Marker, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1Marker, ()>>::Container
fn map_zone_locations( other: <<M as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1Marker, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1Marker, ()>>::Container
fn map_zone_generic_long( other: <<M as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1Marker, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1Marker, ()>>::Container
fn map_zone_generic_short( other: <<M as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1Marker, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1Marker, ()>>::Container
fn map_zone_specific_long( other: <<M as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1Marker, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1Marker, ()>>::Container
fn map_zone_specific_short( other: <<M as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1Marker, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1Marker, ()>>::Container
fn map_metazone_lookup( other: <<M as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1Marker, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1Marker, ()>>::Container
source§impl<T> GetField<T> for Twhere
T: Copy + UnstableSealed,
impl<T> GetField<T> for Twhere
T: Copy + UnstableSealed,
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more