pub struct GenericLong;
Expand description
“Central Time” ⇒ time zone in generic non-location format, long length
§Examples
use icu::datetime::input::Date;
use icu::datetime::input::{Time, TimeZone,TimeZoneInfo, UtcOffset};
use icu::datetime::NoCalendarFormatter;
use icu::time::zone::TimeZoneVariant;
use icu::datetime::fieldsets::zone::GenericLong;
use icu::locale::locale;
use tinystr::tinystr;
use writeable::assert_writeable_eq;
let fmt = NoCalendarFormatter::try_new(
locale!("en").into(),
GenericLong
)
.unwrap();
// Time zone info for America/Chicago in the summer
let zone = TimeZone(tinystr!(8, "uschi"))
.with_offset("-05".parse().ok())
.at_time((Date::try_new_iso(2022, 8, 29).unwrap(), Time::midnight()))
.with_zone_variant(TimeZoneVariant::Daylight);
assert_writeable_eq!(
fmt.format(&zone),
"Central Time"
);
When a display name is unavailable, falls back to the location format:
use icu::datetime::input::Date;
use icu::datetime::input::{Time, TimeZone};
use icu::calendar::Gregorian;
use icu::datetime::FixedCalendarDateTimeFormatter;
use icu::datetime::fieldsets::zone::GenericShort;
use icu::locale::locale;
use tinystr::tinystr;
use writeable::assert_writeable_eq;
// Time zone info for Europe/Istanbul
let zone = TimeZone(tinystr!(8, "trist"))
.without_offset()
.at_time((Date::try_new_iso(2022, 1, 29).unwrap(), Time::midnight()));
let fmt = FixedCalendarDateTimeFormatter::<Gregorian, _>::try_new(
locale!("en").into(),
GenericShort,
)
.unwrap();
assert_writeable_eq!(
fmt.format(&zone),
"Türkiye Time"
);
Can also fall back to the UTC offset:
use icu::datetime::input::Date;
use icu::datetime::input::Time;
use icu::datetime::NoCalendarFormatter;
use icu::datetime::fieldsets::zone::GenericShort;
use icu::datetime::DateTimeWriteError;
use icu::locale::locale;
use icu::time::zone::IanaParser;
use tinystr::tinystr;
use writeable::assert_writeable_eq;
// Set up the formatter
let mut tzf = NoCalendarFormatter::try_new(
locale!("en").into(),
GenericShort,
)
.unwrap();
// "uschi" - has symbol data for short generic non-location
let time_zone = IanaParser::new()
.parse("America/Chicago")
.with_offset("-05".parse().ok())
.at_time((Date::try_new_iso(2022, 8, 29).unwrap(), Time::midnight()));
assert_writeable_eq!(
tzf.format(&time_zone),
"CT"
);
// "ushnl" - has time zone override symbol data for short generic non-location
let time_zone = IanaParser::new()
.parse("Pacific/Honolulu")
.with_offset("-10".parse().ok())
.at_time((Date::try_new_iso(2022, 8, 29).unwrap(), Time::midnight()));
assert_writeable_eq!(
tzf.format(&time_zone),
"HST"
);
// Mis-spelling of "America/Chicago" results in a fallback to offset format
let time_zone = IanaParser::new()
.parse("America/Chigagou")
.with_offset("-05".parse().ok())
.at_time((Date::try_new_iso(2022, 8, 29).unwrap(), Time::midnight()));
assert_writeable_eq!(
tzf.format(&time_zone),
"GMT-5"
);
Since non-location names might change over time, this time zone style requires a reference time.
ⓘ
use icu::datetime::NoCalendarFormatter;
use icu::datetime::fieldsets::zone::GenericLong;
use icu::datetime::input::TimeZone;
use tinystr::tinystr;
use icu::locale::locale;
use writeable::assert_writeable_eq;
let time_zone_basic = TimeZone(tinystr!(8, "uschi")).without_offset();
let formatter = NoCalendarFormatter::try_new(
locale!("en-US").into(),
GenericLong,
)
.unwrap();
// error[E0271]: type mismatch resolving `<Base as TimeZoneModel>::LocalTime == (Date<Iso>, Time)`
// note: required by a bound in `NoCalendarFormatter::<C, FSet>::format`
formatter.format(&time_zone_basic);
Trait Implementations§
Source§impl Clone for GenericLong
impl Clone for GenericLong
Source§fn clone(&self) -> GenericLong
fn clone(&self) -> GenericLong
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl DateTimeMarkers for GenericLong
impl DateTimeMarkers for GenericLong
Source§type Z = GenericLong
type Z = GenericLong
Associated types for time zone formatting. Read more
Source§type GluePatternV1 = NeverMarker<GluePattern<'static>>
type GluePatternV1 = NeverMarker<GluePattern<'static>>
Marker for loading the date/time glue pattern.
Source§impl DateTimeNamesMarker for GenericLong
impl DateTimeNamesMarker for GenericLong
type YearNames = ()
type MonthNames = ()
type WeekdayNames = ()
type DayPeriodNames = ()
type ZoneEssentials = TimeZoneEssentialsV1
type ZoneLocations = LocationsV1
type ZoneLocationsRoot = LocationsRootV1
type ZoneExemplars = ()
type ZoneExemplarsRoot = ()
type ZoneGenericLong = MetazoneGenericNamesLongV1
type ZoneGenericShort = ()
type ZoneStandardLong = MetazoneStandardNamesLongV1
type ZoneSpecificLong = ()
type ZoneSpecificShort = ()
type MetazoneLookup = MetazonePeriodV1
Source§impl Debug for GenericLong
impl Debug for GenericLong
Source§impl GetField<CompositeFieldSet> for GenericLong
impl GetField<CompositeFieldSet> for GenericLong
Source§fn get_field(&self) -> CompositeFieldSet
fn get_field(&self) -> CompositeFieldSet
Returns the value of this trait’s field
T
.Source§impl PartialEq for GenericLong
impl PartialEq for GenericLong
Source§impl ZoneMarkers for GenericLong
impl ZoneMarkers for GenericLong
Source§type TimeZoneIdInput = TimeZone
type TimeZoneIdInput = TimeZone
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 = (Date<Iso>, Time)
type TimeZoneLocalTimeInput = (Date<Iso>, Time)
Marker for resolving the time zone non-location display names, which depend on the datetime.
Source§type EssentialsV1 = TimeZoneEssentialsV1
type EssentialsV1 = TimeZoneEssentialsV1
Marker for loading core time zone data.
Source§type LocationsV1 = LocationsV1
type LocationsV1 = LocationsV1
Marker for loading location names for time zone formatting
Source§type LocationsRootV1 = LocationsRootV1
type LocationsRootV1 = LocationsRootV1
Marker for loading location names for time zone formatting
Source§type ExemplarCitiesV1 = NeverMarker<ExemplarCities<'static>>
type ExemplarCitiesV1 = NeverMarker<ExemplarCities<'static>>
Marker for loading exemplar city names for time zone formatting
Source§type ExemplarCitiesRootV1 = NeverMarker<ExemplarCities<'static>>
type ExemplarCitiesRootV1 = NeverMarker<ExemplarCities<'static>>
Marker for loading exemplar city names for time zone formatting
Source§type GenericLongV1 = MetazoneGenericNamesLongV1
type GenericLongV1 = MetazoneGenericNamesLongV1
Marker for loading generic long time zone names.
Source§type GenericShortV1 = NeverMarker<MetazoneGenericNames<'static>>
type GenericShortV1 = NeverMarker<MetazoneGenericNames<'static>>
Marker for loading generic short time zone names.
Source§type StandardLongV1 = MetazoneStandardNamesLongV1
type StandardLongV1 = MetazoneStandardNamesLongV1
Marker for loading standard long time zone names.
Source§type SpecificLongV1 = NeverMarker<MetazoneSpecificNames<'static>>
type SpecificLongV1 = NeverMarker<MetazoneSpecificNames<'static>>
Marker for loading specific long time zone names.
Source§type SpecificShortV1 = NeverMarker<MetazoneSpecificNames<'static>>
type SpecificShortV1 = NeverMarker<MetazoneSpecificNames<'static>>
Marker for loading generic short time zone names.
Source§type MetazonePeriodV1 = MetazonePeriodV1
type MetazonePeriodV1 = MetazonePeriodV1
Marker for loading metazone periods.
impl Copy for GenericLong
impl Eq for GenericLong
impl StructuralPartialEq for GenericLong
impl UnstableSealed for GenericLong
Auto Trait Implementations§
impl Freeze for GenericLong
impl RefUnwindSafe for GenericLong
impl Send for GenericLong
impl Sync for GenericLong
impl Unpin for GenericLong
impl UnwindSafe for GenericLong
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§impl<M, T> DateTimeNamesFrom<M> for Twhere
M: DateTimeNamesMarker,
T: DateTimeNamesMarker,
<<T as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1, YearNameLength>>::Container: From<<<M as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1, YearNameLength>>::Container>,
<<T as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1, MonthNameLength>>::Container: From<<<M as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1, MonthNameLength>>::Container>,
<<T as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1, WeekdayNameLength>>::Container: From<<<M as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1, WeekdayNameLength>>::Container>,
<<T as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1, DayPeriodNameLength>>::Container: From<<<M as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1, DayPeriodNameLength>>::Container>,
<<T as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneLocationsRoot as NamesContainer<LocationsRootV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneLocationsRoot as NamesContainer<LocationsRootV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneExemplars as NamesContainer<ExemplarCitiesV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneExemplars as NamesContainer<ExemplarCitiesV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneExemplarsRoot as NamesContainer<ExemplarCitiesRootV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneExemplarsRoot as NamesContainer<ExemplarCitiesRootV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneStandardLong as NamesContainer<MetazoneStandardNamesLongV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneStandardLong as NamesContainer<MetazoneStandardNamesLongV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1, ()>>::Container>,
impl<M, T> DateTimeNamesFrom<M> for Twhere
M: DateTimeNamesMarker,
T: DateTimeNamesMarker,
<<T as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1, YearNameLength>>::Container: From<<<M as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1, YearNameLength>>::Container>,
<<T as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1, MonthNameLength>>::Container: From<<<M as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1, MonthNameLength>>::Container>,
<<T as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1, WeekdayNameLength>>::Container: From<<<M as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1, WeekdayNameLength>>::Container>,
<<T as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1, DayPeriodNameLength>>::Container: From<<<M as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1, DayPeriodNameLength>>::Container>,
<<T as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneLocationsRoot as NamesContainer<LocationsRootV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneLocationsRoot as NamesContainer<LocationsRootV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneExemplars as NamesContainer<ExemplarCitiesV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneExemplars as NamesContainer<ExemplarCitiesV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneExemplarsRoot as NamesContainer<ExemplarCitiesRootV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneExemplarsRoot as NamesContainer<ExemplarCitiesRootV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneStandardLong as NamesContainer<MetazoneStandardNamesLongV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneStandardLong as NamesContainer<MetazoneStandardNamesLongV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1, ()>>::Container>,
<<T as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1, ()>>::Container: From<<<M as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1, ()>>::Container>,
fn map_year_names( other: <<M as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1, YearNameLength>>::Container, ) -> <<T as DateTimeNamesMarker>::YearNames as NamesContainer<YearNamesV1, YearNameLength>>::Container
fn map_month_names( other: <<M as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1, MonthNameLength>>::Container, ) -> <<T as DateTimeNamesMarker>::MonthNames as NamesContainer<MonthNamesV1, MonthNameLength>>::Container
fn map_weekday_names( other: <<M as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1, WeekdayNameLength>>::Container, ) -> <<T as DateTimeNamesMarker>::WeekdayNames as NamesContainer<WeekdayNamesV1, WeekdayNameLength>>::Container
fn map_day_period_names( other: <<M as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1, DayPeriodNameLength>>::Container, ) -> <<T as DateTimeNamesMarker>::DayPeriodNames as NamesContainer<DayPeriodNamesV1, DayPeriodNameLength>>::Container
fn map_zone_essentials( other: <<M as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneEssentials as NamesContainer<TimeZoneEssentialsV1, ()>>::Container
fn map_zone_locations( other: <<M as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneLocations as NamesContainer<LocationsV1, ()>>::Container
fn map_zone_locations_root( other: <<M as DateTimeNamesMarker>::ZoneLocationsRoot as NamesContainer<LocationsRootV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneLocationsRoot as NamesContainer<LocationsRootV1, ()>>::Container
fn map_zone_exemplars( other: <<M as DateTimeNamesMarker>::ZoneExemplars as NamesContainer<ExemplarCitiesV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneExemplars as NamesContainer<ExemplarCitiesV1, ()>>::Container
fn map_zone_exemplars_root( other: <<M as DateTimeNamesMarker>::ZoneExemplarsRoot as NamesContainer<ExemplarCitiesRootV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneExemplarsRoot as NamesContainer<ExemplarCitiesRootV1, ()>>::Container
fn map_zone_generic_long( other: <<M as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneGenericLong as NamesContainer<MetazoneGenericNamesLongV1, ()>>::Container
fn map_zone_generic_short( other: <<M as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneGenericShort as NamesContainer<MetazoneGenericNamesShortV1, ()>>::Container
fn map_zone_standard_long( other: <<M as DateTimeNamesMarker>::ZoneStandardLong as NamesContainer<MetazoneStandardNamesLongV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneStandardLong as NamesContainer<MetazoneStandardNamesLongV1, ()>>::Container
fn map_zone_specific_long( other: <<M as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneSpecificLong as NamesContainer<MetazoneSpecificNamesLongV1, ()>>::Container
fn map_zone_specific_short( other: <<M as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::ZoneSpecificShort as NamesContainer<MetazoneSpecificNamesShortV1, ()>>::Container
fn map_metazone_lookup( other: <<M as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1, ()>>::Container, ) -> <<T as DateTimeNamesMarker>::MetazoneLookup as NamesContainer<MetazonePeriodV1, ()>>::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