Struct icu_datetime::fieldset::Zs
source · #[non_exhaustive]pub struct Zs {
pub length: NeoSkeletonLength,
}
Expand description
“CDT” ⇒ time zone in specific non-location format (only short)
This field set can be used only in combination with others.
§Examples
ⓘ
use icu::calendar::{Date, Time};
use icu::timezone::{TimeZoneBcp47Id, TimeZoneInfo, UtcOffset, ZoneVariant};
use icu::datetime::TimeFormatter;
use icu::datetime::fieldset::Zs;
use icu::locale::locale;
use tinystr::tinystr;
use writeable::assert_try_writeable_eq;
let fmt = TimeFormatter::try_new(
&locale!("en").into(),
Zs::short(),
)
.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_try_writeable_eq!(
fmt.format(&zone),
"CDT"
);
This style requires a [ZoneVariant
], so
only a full time zone info can be formatted with this style.
For example, [TimeZoneInfo<AtTime>
] cannot be formatted.
ⓘ
use icu::calendar::{DateTime, Iso};
use icu::datetime::FixedCalendarDateTimeFormatter;
use icu::datetime::fieldset::{Combo, T, Zs};
use icu::timezone::{TimeZoneBcp47Id, UtcOffset, ZoneVariant};
use tinystr::tinystr;
use icu::locale::locale;
use writeable::assert_try_writeable_eq;
let datetime = DateTime::try_new_gregorian(2024, 10, 18, 0, 0, 0).unwrap();
let time_zone_basic = TimeZoneBcp47Id(tinystr!(8, "uschi")).with_offset("-06".parse().ok());
let time_zone_at_time = time_zone_basic.at_time((datetime.date.to_iso(), datetime.time));
let formatter = FixedCalendarDateTimeFormatter::try_new(
&locale!("en-US").into(),
Combo::<T, Zs>::medium(),
)
.unwrap();
// error[E0271]: type mismatch resolving `<AtTime as TimeZoneModel>::ZoneVariant == ZoneVariant`
// note: required by a bound in `FixedCalendarDateTimeFormatter::<C, FSet>::format`
formatter.format(&time_zone_at_time);
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.length: NeoSkeletonLength
The desired length of the formatted string.
See: NeoSkeletonLength
Implementations§
source§impl Zs
impl Zs
sourcepub const fn with_length(length: NeoSkeletonLength) -> Self
pub const fn with_length(length: NeoSkeletonLength) -> Self
Creates a Zs skeleton with the given formatting length.
Trait Implementations§
source§impl DateTimeMarkers for Zs
impl DateTimeMarkers for Zs
source§type GluePatternV1Marker = NeverMarker<GluePatternV1<'static>>
type GluePatternV1Marker = NeverMarker<GluePatternV1<'static>>
Marker for loading the date/time glue pattern.
source§impl DateTimeNamesMarker for Zs
impl DateTimeNamesMarker for Zs
type YearNames = ()
type MonthNames = ()
type WeekdayNames = ()
type DayPeriodNames = ()
type ZoneEssentials = TimeZoneEssentialsV1Marker
type ZoneLocations = ()
type ZoneGenericLong = ()
type ZoneGenericShort = ()
type ZoneSpecificLong = ()
type ZoneSpecificShort = MetazoneSpecificNamesShortV1Marker
type MetazoneLookup = MetazonePeriodV1Marker
source§impl ZoneMarkers for Zs
impl ZoneMarkers for Zs
source§type TimeZoneIdInput = TimeZoneBcp47Id
type TimeZoneIdInput = TimeZoneBcp47Id
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 = ZoneVariant
type TimeZoneVariantInput = ZoneVariant
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 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 = MetazoneSpecificNamesShortV1Marker
type SpecificShortV1Marker = MetazoneSpecificNamesShortV1Marker
Marker for loading generic short time zone names.
source§type MetazonePeriodV1Marker = MetazonePeriodV1Marker
type MetazonePeriodV1Marker = MetazonePeriodV1Marker
Marker for loading metazone periods.
impl Copy for Zs
impl Eq for Zs
impl StructuralPartialEq for Zs
impl UnstableSealed for Zs
Auto Trait Implementations§
impl Freeze for Zs
impl RefUnwindSafe for Zs
impl Send for Zs
impl Sync for Zs
impl Unpin for Zs
impl UnwindSafe for Zs
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<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