Struct icu_datetime::fieldset::T
source · #[non_exhaustive]pub struct T {
pub length: NeoSkeletonLength,
pub alignment: Option<Alignment>,
pub time_precision: Option<TimePrecision>,
}
Expand description
“3:47:50 PM” ⇒ time (locale-dependent hour cycle)
§Examples
use icu::calendar::Time;
use icu::datetime::TimeFormatter;
use icu::datetime::fieldset::T;
use icu::locale::locale;
use writeable::assert_try_writeable_eq;
let fmt = TimeFormatter::try_new(
&locale!("en").into(),
T::medium(),
)
.unwrap();
let time = Time::try_new(15, 47, 50, 0).unwrap();
assert_try_writeable_eq!(
fmt.format(&time),
"3:47:50 PM"
);
Hours can be switched between 12-hour and 24-hour time via the u-hc
locale keyword.
use icu::calendar::Time;
use icu::datetime::fieldset::T;
use icu::datetime::TimeFormatter;
use icu::locale::locale;
use writeable::assert_try_writeable_eq;
// By default, en-US uses 12-hour time and fr-FR uses 24-hour time,
// but we can set overrides.
let formatter = TimeFormatter::try_new(
&locale!("en-US-u-hc-h12").into(),
T::short().hm(),
)
.unwrap();
assert_try_writeable_eq!(
formatter.format(&Time::try_new(16, 12, 20, 0).unwrap()),
"4:12 PM"
);
let formatter = TimeFormatter::try_new(
&locale!("en-US-u-hc-h23").into(),
T::short().hm(),
)
.unwrap();
assert_try_writeable_eq!(
formatter.format(&Time::try_new(16, 12, 20, 0).unwrap()),
"16:12"
);
let formatter = TimeFormatter::try_new(
&locale!("fr-FR-u-hc-h12").into(),
T::short().hm(),
)
.unwrap();
assert_try_writeable_eq!(
formatter.format(&Time::try_new(16, 12, 20, 0).unwrap()),
"4:12 PM"
);
let formatter = TimeFormatter::try_new(
&locale!("fr-FR-u-hc-h23").into(),
T::short().hm(),
)
.unwrap();
assert_try_writeable_eq!(
formatter.format(&Time::try_new(16, 12, 20, 0).unwrap()),
"16:12"
);
Hour cycles h11
and h24
are supported, too:
use icu::calendar::Time;
use icu::datetime::fieldset::T;
use icu::datetime::TimeFormatter;
use icu::locale::locale;
use writeable::assert_try_writeable_eq;
let formatter = TimeFormatter::try_new(
&locale!("und-u-hc-h11").into(),
T::short().hm(),
)
.unwrap();
assert_try_writeable_eq!(
formatter.format(&Time::try_new(0, 0, 0, 0).unwrap()),
"0:00 AM"
);
let formatter = TimeFormatter::try_new(
&locale!("und-u-hc-h24").into(),
T::short().hm(),
)
.unwrap();
assert_try_writeable_eq!(
formatter.format(&Time::try_new(0, 0, 0, 0).unwrap()),
"24:00"
);
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
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
alignment: Option<Alignment>
Whether fields should be aligned for a column-like layout.
See: Alignment
time_precision: Option<TimePrecision>
How precisely to display the time of day
See: TimePrecision
Implementations§
source§impl T
impl T
sourcepub const fn with_length(length: NeoSkeletonLength) -> Self
pub const fn with_length(length: NeoSkeletonLength) -> Self
Creates a T skeleton with the given formatting length.
source§impl T
impl T
sourcepub const fn with_alignment(self, alignment: Alignment) -> Self
pub const fn with_alignment(self, alignment: Alignment) -> Self
Sets the alignment option.
source§impl T
impl T
sourcepub const fn with_time_precision(self, time_precision: TimePrecision) -> Self
pub const fn with_time_precision(self, time_precision: TimePrecision) -> Self
Sets the time precision option.
sourcepub fn hm(self) -> Self
pub fn hm(self) -> Self
Sets the time precision to TimePrecision::MinuteExact
sourcepub fn hms(self) -> Self
pub fn hms(self) -> Self
Sets the time precision to TimePrecision::SecondPlus
source§impl T
impl T
sourcepub fn zone_z(self) -> Combo<Self, Zs>
pub fn zone_z(self) -> Combo<Self, Zs>
Associates this field set with a specific non-location format time zone, as in “Pacific Daylight Time”.
sourcepub fn zone_o(self) -> Combo<Self, O>
pub fn zone_o(self) -> Combo<Self, O>
Associates this field set with an offset format time zone, as in “GMT−8”.
Trait Implementations§
source§impl DateTimeMarkers for T
impl DateTimeMarkers for T
source§type GluePatternV1Marker = NeverMarker<GluePatternV1<'static>>
type GluePatternV1Marker = NeverMarker<GluePatternV1<'static>>
source§impl DateTimeNamesMarker for T
impl DateTimeNamesMarker for T
type YearNames = ()
type MonthNames = ()
type WeekdayNames = ()
type DayPeriodNames = DayPeriodNamesV1Marker
type ZoneEssentials = ()
type ZoneLocations = ()
type ZoneGenericLong = ()
type ZoneGenericShort = ()
type ZoneSpecificLong = ()
type ZoneSpecificShort = ()
type MetazoneLookup = ()
source§impl GetField<CompositeFieldSet> for T
impl GetField<CompositeFieldSet> for T
source§fn get_field(&self) -> CompositeFieldSet
fn get_field(&self) -> CompositeFieldSet
T
.source§impl TimeMarkers for T
impl TimeMarkers for T
source§type DayPeriodNamesV1Marker = DayPeriodNamesV1Marker
type DayPeriodNamesV1Marker = DayPeriodNamesV1Marker
source§type TimeSkeletonPatternsV1Marker = TimeNeoSkeletonPatternsV1Marker
type TimeSkeletonPatternsV1Marker = TimeNeoSkeletonPatternsV1Marker
source§type MinuteInput = IsoMinute
type MinuteInput = IsoMinute
source§type SecondInput = IsoSecond
type SecondInput = IsoSecond
source§type NanoSecondInput = NanoSecond
type NanoSecondInput = NanoSecond
impl Copy for T
impl Eq for T
impl StructuralPartialEq for T
impl UnstableSealed for T
Auto Trait Implementations§
impl Freeze for T
impl RefUnwindSafe for T
impl Send for T
impl Sync for T
impl Unpin for T
impl UnwindSafe for T
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
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)
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>
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>
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